Nell’ambiente IT dinamico di oggi, l’automazione e lo scripting sono strumenti essenziali per i professionisti IT e per i fornitori di servizi gestiti (MSP). Che si tratti di implementare applicazioni, gestire l’infrastruttura o risolvere i problemi, gli script possono far risparmiare innumerevoli ore di lavoro manuale, aumentare l’efficienza e ridurre gli errori umani. Un’attività comune che i professionisti hanno spesso bisogno di automatizzare è scaricare file da URL utilizzando uno script di shell, in particolare uno script bash.
Diamo un’occhiata più da vicino a uno script bash che non solo aiuta a scaricare file da URL, ma verifica anche il contenuto dei file con una somma MD5 fornita e crea le strutture di directory necessarie se non esistono già.
Script bash per scaricare file da URL
#!/usr/bin/env bash # Descrizione: Scarica un file da un URL in un percorso specificato e può verificare il contenuto del file con una somma md5 fornita. # # Note di rilascio: Rilascio iniziale # (c) 2023 NinjaOne # Utilizzando questo script, l'utente dichiara di accettare i seguenti termini legali e le nostre Condizioni d'uso all'indirizzo https://www.ninjaone.com/it/condizioni-utilizzo/. # Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne concede all'utente una licenza limitata per l'utilizzo dello script in conformità con i presenti termini legali. # Limitazione d'uso: L'utente può utilizzare lo script solo per legittimi scopi personali o aziendali interni e non può condividere lo script con altri soggetti. # Divieto di ripubblicazione: In nessun caso è consentito ripubblicare lo script in una libreria di script o in un sito web appartenente o sotto il controllo di un altro fornitore di software. # Esclusione di garanzia: Lo script viene fornito "così com'è" e "come disponibile", senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le esigenze o le aspettative specifiche dell'utente. # Assunzione del rischio: L'uso dello script è a proprio rischio. L'utente riconosce che l'utilizzo dello script comporta alcuni rischi intrinseci, che comprende e si assume. # Rinuncia e liberatoria: L'utente non riterrà NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall'uso dello script e rinuncerà a qualsiasi diritto o rimedio legale o di equità nei confronti di NinjaOne relativo all'uso dello script. # EULA: Se l’utente è un cliente NinjaOne, l'uso dello script è soggetto al Contratto di licenza con l'utente finale (EULA) applicabile. # # Utilizzo: <url> <percorso del file di download> [somma md5 prevista] # <> è obbligatorio # [] è opzionale # Esempio: https://www.nirsoft.net/utils/advancedrun.zip /tmp/advancedrun.zip # Scarica advancedrun.zip # Esempio: https://www.nirsoft.net/utils/advancedrun.zip /tmp/advancedrun.zip 1f0913135878bb6cd30c1f3f6cf4b882 # Scarica advancedrun.zip, verifica l'hash di somma md5 fornita # # Note: Se il percorso non esiste, lo script creerà le cartelle necessarie per collocarlo. # Se si usa /tmp/MyFiles/advancedrun.zip e la cartella MyFiles non esiste, la creerà. # Lo stesso vale per /tmp/MyFiles/Tools/advancedrun.zip, quindi creerà MyFiles e Tools. # Parametri URL=$1 SAVE_PATH=$2 SUM=$3 URL_CHECK_REGEX='(https?|ftp|file)://[-[:alnum:]+&@#/%?=~_|!:,.;]*[-[:alnum:]+&@#/%=~_|]' if [[ "${URL}" =~ ${URL_CHECK_REGEX} ]]; then echo "${URL} is a valid URL." else echo "${URL} is an invalid URL." exit 1 fi # Assicurati che il percorso fornito sia in un formato valido e crea la struttura delle cartelle, se necessario. PATH_CHECK_REGEX='^(/[^/ ][^/ ]*)+/?$' if [[ "${SAVE_PATH}" =~ ${PATH_CHECK_REGEX} ]]; then echo "${SAVE_PATH} is a valid path." FOLDER=$(dirname "${SAVE_PATH}") if [[ -d "${FOLDER}" ]]; then echo "Folder ${FOLDER} exists" else echo "Folder ${FOLDER} does not exist, creating." mkdir -p -v "${FOLDER}" if [ -f "${FOLDER}" ]; then echo "Created ${FOLDER}" else echo "Failed to created ${FOLDER}" exit 1 fi fi else echo "${SAVE_PATH} is an invalid path." exit 1 fi function private_download() { # $1 = URL # $2 = Percorso del file if [ "$(command -v wget)" ]; then echo "Downloading using wget" wget -O "$2" "$1" elif [ "$(command -v curl)" ] ; then echo "Downloading using curl" curl "$1" --output "$2" else echo "Failed to find wget or curl." exit 1 fi } function private_gethash() { FILE=$1 HASH=$2 WAS_ERROR=0 if ! command -v md5 &>/dev/null; then # Non dovrebbe accadere mai echo "md5 could not be found" WAS_ERROR=1 fi if [ "$(command -v md5)" ]; then CURRENT_HASH=$(md5 "${FILE}") # "##* " nel "${CURRENT_HASH##* }" ottiene l'ultima parola in una stringa if [ "${HASH}" = "${CURRENT_HASH##* }" ]; then echo "File matches md5sum hash" WAS_ERROR=0 else echo "File does not match md5sum hash" echo "Expected: ${CURRENT_HASH}" echo "File: ${HASH}" WAS_ERROR=1 fi fi if [ ${WAS_ERROR} == 1 ]; then echo "Error verifying hash sum." exit 1 fi } function private_validate() { if [ -f "$1" ]; then echo "File Downloaded." private_gethash "$1" "$2" else echo "Failed to download file." exit 1 fi } # Scarica il file private_download "${URL}" "${SAVE_PATH}" # Se SUM non è vuota if [[ -n "${SUM}" ]]; then # Assicurati che il file sia stato scaricato # Confronta l'hash del parametro con la somma md5 calcolata del file private_validate "${SAVE_PATH}" "${SUM}" fi
Panoramica dello script
Questo script accetta principalmente tre parametri: l’URL da cui scaricare il file, il percorso in cui il file deve essere salvato e un hash MD5 opzionale per la verifica del contenuto. Se il percorso non esiste, lo script creerà le cartelle necessarie, offrendo un vantaggio significativo quando si lavora con strutture di directory complesse.
Lo script per scaricare file da URL inizia con la convalida dei parametri dell’URL e del percorso. Se uno di questi parametri non è valido, il programma esce immediatamente e lancia un errore. Lo script utilizza le espressioni regolari per convalidare l’URL e il percorso.
Una volta verificati i parametri, procede al download del file. Lo script scaricare file da URL è progettato per utilizzare “wget” o “curl” in base a ciò che è disponibile nell’ambiente.
Dopo aver scaricato con successo il file, se è stato fornito un hash MD5, verifica il contenuto del file scaricato rispetto all’hash fornito. Questa funzione è particolarmente utile per garantire l’integrità dei file, un aspetto importante in molte operazioni IT.
Comandi di script
Lo script per scaricare file da URL utilizza principalmente i comandi “wget” o “curl” per scaricare i file, strumenti comuni nei sistemi basati su Unix. ‘wget’ e ‘curl’ sono entrambe utility gratuite per il download non interattivo di file dal web, che supportano i protocolli HTTP, HTTPS e FTP.
Lo script per scaricare file da URL utilizza anche “md5”, una utility a riga di comando che calcola e verifica il message digest MD5. Il valore di hash MD5 (128 bit) viene tipicamente rappresentato come una sequenza di 32 cifre esadecimali. Viene utilizzato per garantire l’integrità dei dati dei file producendo un valore hash unico per il contenuto di un file. Se due file hanno lo stesso valore hash MD5, è molto probabile che si tratti dello stesso file.
Il comando ‘mkdir -p’ viene usato per creare il percorso della directory se non esiste. Il flag ‘-p’ assicura che non venga segnalato alcun errore se una directory data come operando esiste già.
Lo script per scaricare file da URL utilizza “command -v” per verificare la disponibilità dei comandi “wget”, “curl” e “md5” nell’ambiente. Utilizza anche espressioni regolari e dichiarazioni condizionali “[[” e “]]”[[‘ and ‘]per convalidare l’URL e il percorso.
Approfondiamo quindi lo script ed esploriamo le sue potenziali applicazioni.
Possibili utilizzi
Questo script bash per scaricare file da URL può essere utilizzato in diversi scenari:
- Aggiornamenti software: Lo script può essere utilizzato per automatizzare il download degli aggiornamenti software dal sito web di un fornitore. Una volta scaricato, un altro script potrebbe essere utilizzato per applicare questi aggiornamenti su più sistemi in una rete.
- Patch di sicurezza: Le patch di sicurezza vengono spesso rilasciate come file scaricabili da internet. Questo script può automatizzare il processo di download dei patch, garantendo che tutti i sistemi di una rete siano aggiornati e sicuri.
- File di dati: Negli ambienti ad alta intensità di dati, è comune avere file di dati ospitati su server web. Questo script può essere utilizzato per scaricare tali file per un’ulteriore analisi o elaborazione dei dati.
- Sistemi distribuiti: In un sistema distribuito, potrebbe essere necessario scaricare e verificare un file specifico su più sistemi. Lo script può essere utilizzato per garantire che venga utilizzata la stessa versione di un file su tutti i sistemi.
- Backup e ripristino: Lo script può essere utilizzato per scaricare i file di backup da un server remoto per scopi di disaster recovery.
Comprendendo la meccanica dello script, i professionisti IT lo possono modificare e ampliare per soddisfare le loro esigenze specifiche, migliorando ulteriormente le loro capacità di automazione.
Vantaggi per i professionisti IT e gli MSP
Tale script per scaricare file da URL offre numerosi vantaggi ai professionisti IT e agli MSP:
- Risparmio di tempo: Invece di scaricare manualmente i file, i professionisti possono utilizzare questo script per automatizzare il processo, risparmiando così tempo prezioso.
- Riduzione degli errori: Con il download automatico e la verifica MD5, le possibilità di errore umano sono notevolmente ridotte.
- Flessibilità: Lo script può utilizzare sia “wget” che “curl”, rendendolo adattabile a diversi ambienti.
- Integrità del file: Confrontando gli hash MD5, lo script garantisce l’integrità del file scaricato, un aspetto fondamentale nelle operazioni sensibili alla sicurezza.
Considerazioni finali
Lo script Bash per scaricare file da URL semplifica un’attività comune, migliora l’efficienza e aumenta l’affidabilità e la sicurezza. Sia che tu sia un sysadmin esperto o che tu abbia appena iniziato a lavorare nel mondo dell’IT, questo script è un’aggiunta preziosa al tuo kit di strumenti.
La piattaforma di monitoraggio e gestione remota di NinjaOne con un’ottima valutazione, può consentire l’implementazione e l’esecuzione di questo script bash su più sistemi in modo continuo. Sia che si tratti di scaricare aggiornamenti software, patch di sicurezza o file di dati, l’integrazione di questo script per scaricare file da URL con NinjaOne può aiutare ad automatizzare e semplificare questi processi IT. Può garantire la coerenza, ridurre gli errori manuali e risparmiare tempo consentendo distribuzioni di massa. Pertanto, le solide funzionalità di NinjaOne, se utilizzate insieme a questo script per scaricare file da URL, possono migliorare notevolmente l’efficienza operativa e la produttività.