{"id":208093,"date":"2023-09-01T17:03:05","date_gmt":"2023-09-01T17:03:05","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/scaricare-file-da-url-con-script-bash\/"},"modified":"2024-02-28T21:54:01","modified_gmt":"2024-02-28T21:54:01","slug":"scaricare-file-da-url-con-script-bash","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/it\/script-hub\/scaricare-file-da-url-con-script-bash\/","title":{"rendered":"Come scaricare file da URL con uno script Bash"},"content":{"rendered":"<p><span data-contrast=\"auto\">Nell&#8217;ambiente IT dinamico di oggi, l&#8217;automazione e lo scripting sono strumenti essenziali per i professionisti IT e per i<\/span> <a href=\"https:\/\/www.ninjaone.com\/it\/what-is-an-msp\"><span data-contrast=\"none\">fornitori di servizi gestiti (MSP)<\/span><\/a><span data-contrast=\"auto\">. Che si tratti di implementare applicazioni, gestire l&#8217;infrastruttura o risolvere i problemi, gli script possono far risparmiare innumerevoli ore di lavoro manuale, aumentare l&#8217;efficienza e ridurre gli errori umani. Un&#8217;attivit\u00e0 comune che i professionisti hanno spesso bisogno di automatizzare \u00e8 scaricare file da URL utilizzando uno script di shell, in particolare uno script bash.<\/span><\/p>\n<p><span data-contrast=\"auto\">Diamo un&#8217;occhiata pi\u00f9 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\u00e0.<\/span><\/p>\n<h2>Script bash per scaricare file da URL<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\">#!\/usr\/bin\/env bash\r\n# Descrizione: Scarica un file da un URL in un percorso specificato e pu\u00f2 verificare il contenuto del file con una somma md5 fornita.\r\n#\r\n# Note di rilascio: Rilascio iniziale\r\n# (c) 2023 NinjaOne\r\n# 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\/.\r\n# Diritti di propriet\u00e0: NinjaOne possiede e continuer\u00e0 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\u00e0 con i presenti termini legali. \r\n# Limitazione d'uso: L'utente pu\u00f2 utilizzare lo script solo per legittimi scopi personali o aziendali interni e non pu\u00f2 condividere lo script con altri soggetti. \r\n# Divieto di ripubblicazione: In nessun caso \u00e8 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. \r\n# Esclusione di garanzia: Lo script viene fornito \"cos\u00ec com'\u00e8\" e \"come disponibile\", senza garanzie di alcun tipo. NinjaOne non promette n\u00e9 garantisce che lo script sia privo di difetti o che soddisfi le esigenze o le aspettative specifiche dell'utente. \r\n# Assunzione del rischio: L'uso dello script \u00e8 a proprio rischio. L'utente riconosce che l'utilizzo dello script comporta alcuni rischi intrinseci, che comprende e si assume. \r\n# Rinuncia e liberatoria: L'utente non riterr\u00e0 NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall'uso dello script e rinuncer\u00e0 a qualsiasi diritto o rimedio legale o di equit\u00e0 nei confronti di NinjaOne relativo all'uso dello script. \r\n# EULA: Se l\u2019utente \u00e8 un cliente NinjaOne, l'uso dello script \u00e8 soggetto al Contratto di licenza con l'utente finale (EULA) applicabile.\r\n#\r\n# Utilizzo: &lt;url&gt; &lt;percorso del file di download&gt; [somma md5 prevista]\r\n# &lt;&gt; \u00e8 obbligatorio \r\n# [] \u00e8 opzionale \r\n# Esempio: https:\/\/www.nirsoft.net\/utils\/advancedrun.zip \/tmp\/advancedrun.zip \r\n# Scarica advancedrun.zip \r\n# Esempio: https:\/\/www.nirsoft.net\/utils\/advancedrun.zip \/tmp\/advancedrun.zip 1f0913135878bb6cd30c1f3f6cf4b882 \r\n# Scarica advancedrun.zip, verifica l'hash di somma md5 fornita \r\n# \r\n# Note: Se il percorso non esiste, lo script creer\u00e0 le cartelle necessarie per collocarlo. \r\n# Se si usa \/tmp\/MyFiles\/advancedrun.zip e la cartella MyFiles non esiste, la creer\u00e0. \r\n# Lo stesso vale per \/tmp\/MyFiles\/Tools\/advancedrun.zip, quindi creer\u00e0 MyFiles e Tools. \r\n\r\n# Parametri \r\nURL=$1 \r\nSAVE_PATH=$2 \r\nSUM=$3 \r\n\r\nURL_CHECK_REGEX='(https?|ftp|file):\/\/[-[:alnum:]+&amp;@#\/%?=~_|!:,.;]*[-[:alnum:]+&amp;@#\/%=~_|]' \r\nif [[ \"${URL}\" =~ ${URL_CHECK_REGEX} ]]; then\r\n    echo \"${URL} is a valid URL.\"\r\nelse\r\n    echo \"${URL} is an invalid URL.\"\r\n    exit 1\r\nfi\r\n\r\n# Assicurati che il percorso fornito sia in un formato valido e crea la struttura delle cartelle, se necessario.\r\nPATH_CHECK_REGEX='^(\/[^\/ ][^\/ ]*)+\/?$'\r\nif [[ \"${SAVE_PATH}\" =~ ${PATH_CHECK_REGEX} ]]; then\r\n    echo \"${SAVE_PATH} is a valid path.\"\r\n    FOLDER=$(dirname \"${SAVE_PATH}\")\r\n    if [[ -d \"${FOLDER}\" ]]; then\r\n        echo \"Folder ${FOLDER} exists\"\r\n    else\r\n        echo \"Folder ${FOLDER} does not exist, creating.\"\r\n        mkdir -p -v \"${FOLDER}\"\r\n        if [ -f \"${FOLDER}\" ]; then\r\n            echo \"Created ${FOLDER}\"\r\n        else\r\n            echo \"Failed to created ${FOLDER}\"\r\n            exit 1\r\n        fi\r\n    fi\r\nelse\r\n    echo \"${SAVE_PATH} is an invalid path.\"\r\n    exit 1\r\nfi\r\n\r\nfunction private_download() {\r\n    # $1 = URL\r\n    # $2 = Percorso del file\r\n    if [ \"$(command -v wget)\" ]; then\r\n        echo \"Downloading using wget\"\r\n        wget -O \"$2\" \"$1\"\r\n    elif [ \"$(command -v curl)\" ] ; then \r\n        echo \"Downloading using curl\" \r\n        curl \"$1\" --output \"$2\" \r\n    else \r\n        echo \"Failed to find wget or curl.\" \r\n        exit 1 \r\n    fi \r\n} \r\n\r\nfunction private_gethash() { \r\n    FILE=$1 \r\n    HASH=$2 \r\n    WAS_ERROR=0 \r\n    if ! command -v md5 &amp;&gt;\/dev\/null; then \r\n        # Non dovrebbe accadere mai \r\n        echo \"md5 could not be found\" \r\n        WAS_ERROR=1 \r\n    fi \r\n    if [ \"$(command -v md5)\" ]; then\r\n        CURRENT_HASH=$(md5 \"${FILE}\")\r\n        # \"##* \" nel \"${CURRENT_HASH##* }\" ottiene l'ultima parola in una stringa\r\n        if [ \"${HASH}\" = \"${CURRENT_HASH##* }\" ]; then\r\n            echo \"File matches md5sum hash\"\r\n            WAS_ERROR=0\r\n        else\r\n            echo \"File does not match md5sum hash\"\r\n            echo \"Expected: ${CURRENT_HASH}\"\r\n            echo \"File: ${HASH}\"\r\n            WAS_ERROR=1\r\n        fi\r\n    fi\r\n    if [ ${WAS_ERROR} == 1 ]; then\r\n        echo \"Error verifying hash sum.\"\r\n        exit 1\r\n    fi\r\n}\r\n\r\nfunction private_validate() {\r\n    if [ -f \"$1\" ]; then\r\n        echo \"File Downloaded.\"\r\n        private_gethash \"$1\" \"$2\"\r\n    else\r\n        echo \"Failed to download file.\"\r\n        exit 1\r\n    fi\r\n}\r\n\r\n# Scarica il file\r\nprivate_download \"${URL}\" \"${SAVE_PATH}\"\r\n# Se SUM non \u00e8 vuota\r\nif [[ -n \"${SUM}\" ]]; then \r\n    # Assicurati che il file sia stato scaricato \r\n    # Confronta l'hash del parametro con la somma md5 calcolata del file \r\n    private_validate \"${SAVE_PATH}\" \"${SUM}\" \r\nfi\r\n<\/pre>\n<div class=\"blog-cta-new blog-cta-style-1\"><div class=\"cta-left\"><h2><\/h2><p><\/p><\/div><div class=\"cta-right\"><a class=\"button\" href=\"\"><\/a><\/div><\/div>\n<h2>Panoramica dello script<\/h2>\n<p><span data-contrast=\"auto\">Questo script accetta principalmente tre parametri: l&#8217;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\u00e0 le cartelle necessarie, offrendo un vantaggio significativo quando si lavora con strutture di directory complesse.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Lo script per scaricare file da URL inizia con la convalida dei parametri dell&#8217;URL e del percorso. Se uno di questi parametri non \u00e8 valido, il programma esce immediatamente e lancia un errore. Lo script utilizza le espressioni regolari per convalidare l&#8217;URL e il percorso. <\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Una volta verificati i parametri, procede al download del file. Lo script scaricare file da URL \u00e8 progettato per utilizzare &#8220;wget&#8221; o &#8220;curl&#8221; in base a ci\u00f2 che \u00e8 disponibile nell&#8217;ambiente. <\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Dopo aver scaricato con successo il file, se \u00e8 stato fornito un hash MD5, verifica il contenuto del file scaricato rispetto all&#8217;hash fornito. Questa funzione \u00e8 particolarmente utile per garantire l&#8217;integrit\u00e0 dei file, un aspetto importante in molte operazioni IT.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<h2>Comandi di script<\/h2>\n<p><span data-contrast=\"auto\">Lo script per scaricare file da URL utilizza principalmente i comandi &#8220;wget&#8221; o &#8220;curl&#8221; per scaricare i file, strumenti comuni nei sistemi basati su Unix. &#8216;wget&#8217; e &#8216;curl&#8217; sono entrambe utility gratuite per il download non interattivo di file dal web, che supportano i protocolli HTTP, HTTPS e FTP. <\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Lo script per scaricare file da URL utilizza anche &#8220;md5&#8221;, 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&#8217;integrit\u00e0 dei dati dei file producendo un valore hash unico per il contenuto di un file. Se due file hanno lo stesso valore hash MD5, \u00e8 molto probabile che si tratti dello stesso file.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Il comando &#8216;mkdir -p&#8217; viene usato per creare il percorso della directory se non esiste. Il flag &#8216;-p&#8217; assicura che non venga segnalato alcun errore se una directory data come operando esiste gi\u00e0.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Lo script per scaricare file da URL utilizza &#8220;command -v&#8221; per verificare la disponibilit\u00e0 dei comandi &#8220;wget&#8221;, &#8220;curl&#8221; e &#8220;md5&#8221; nell&#8217;ambiente. Utilizza anche espressioni regolari e dichiarazioni condizionali &#8220;[[&#8221; e &#8220;]]&#8221;[[&#8216; and &#8216;]per convalidare l&#8217;URL e il percorso.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Approfondiamo quindi lo script ed esploriamo le sue potenziali applicazioni.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<h2>Possibili utilizzi<\/h2>\n<p><span data-contrast=\"auto\">Questo script bash per scaricare file da URL pu\u00f2 essere utilizzato in diversi scenari:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<ol>\n<li><b><span data-contrast=\"auto\">Aggiornamenti software:<\/span><\/b> <span data-contrast=\"auto\">\u00a0Lo script pu\u00f2 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\u00f9 sistemi in una rete.<\/span><\/li>\n<\/ol>\n<ol start=\"2\">\n<li><b><span data-contrast=\"auto\">Patch di sicurezza:<\/span><\/b> <span data-contrast=\"auto\">\u00a0Le patch di sicurezza vengono spesso rilasciate come file scaricabili da internet. Questo script pu\u00f2 <a href=\"https:\/\/www.ninjaone.com\/it\/blog\/come-automatizzare-il-patch-management\/\">automatizzare il processo di download dei patch<\/a>, garantendo che tutti i sistemi di una rete siano aggiornati e sicuri.<\/span><\/li>\n<\/ol>\n<ol start=\"3\">\n<li><b><span data-contrast=\"auto\">File di dati:<\/span><\/b> <span data-contrast=\"auto\">\u00a0Negli ambienti ad alta intensit\u00e0 di dati, \u00e8 comune avere file di dati ospitati su server web. Questo script pu\u00f2 essere utilizzato per scaricare tali file per un&#8217;ulteriore analisi o elaborazione dei dati.<\/span><\/li>\n<\/ol>\n<ol start=\"4\">\n<li><b><span data-contrast=\"auto\">Sistemi distribuiti:<\/span><\/b> <span data-contrast=\"auto\">\u00a0In un sistema distribuito, potrebbe essere necessario scaricare e verificare un file specifico su pi\u00f9 sistemi. Lo script pu\u00f2 essere utilizzato per garantire che venga utilizzata la stessa versione di un file su tutti i sistemi.<\/span><\/li>\n<\/ol>\n<ol start=\"5\">\n<li><b><span data-contrast=\"auto\">Backup e ripristino:<\/span><\/b><span data-contrast=\"auto\">\u00a0Lo script pu\u00f2 essere utilizzato per scaricare i file di backup da un server remoto per scopi di <a href=\"https:\/\/www.ninjaone.com\/it\/blog\/backup-e-il-disaster-recovery-e-perche-e-necessario\">disaster recovery<\/a>.<\/span><\/li>\n<\/ol>\n<p><span class=\"TextRun SCXW52657841 BCX0\" lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW52657841 BCX0\">Comprendendo la meccanica dello script, i professionisti IT lo possono<\/span> <span class=\"NormalTextRun SCXW52657841 BCX0\">modificare<\/span> <span class=\"NormalTextRun SCXW52657841 BCX0\">e ampliare per soddisfare le loro esigenze specifiche, migliorando ulteriormente le loro capacit\u00e0 di automazione.<\/span><\/span><span class=\"EOP SCXW52657841 BCX0\" data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<h2>Vantaggi per i professionisti IT e gli MSP<\/h2>\n<p><span data-contrast=\"auto\">Tale script per scaricare file da URL offre numerosi vantaggi ai professionisti IT e agli MSP:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<ul>\n<li><span data-contrast=\"auto\">Risparmio di tempo: Invece di scaricare manualmente i file, i professionisti possono utilizzare questo script per automatizzare il processo, risparmiando cos\u00ec tempo prezioso.<\/span><\/li>\n<\/ul>\n<ul>\n<li><span data-contrast=\"auto\">Riduzione degli errori: Con il download automatico e la verifica MD5, le possibilit\u00e0 di errore umano sono notevolmente ridotte.<\/span><\/li>\n<\/ul>\n<ul>\n<li><span data-contrast=\"auto\">Flessibilit\u00e0: Lo script pu\u00f2 utilizzare sia &#8220;wget&#8221; che &#8220;curl&#8221;, rendendolo adattabile a diversi ambienti.<\/span><\/li>\n<\/ul>\n<ul>\n<li><span data-contrast=\"auto\">Integrit\u00e0 del file: Confrontando gli hash MD5, lo script garantisce l&#8217;integrit\u00e0 del file scaricato, un aspetto fondamentale nelle operazioni sensibili alla sicurezza.<\/span><\/li>\n<\/ul>\n<h2>Considerazioni finali<\/h2>\n<p><span data-contrast=\"auto\">Lo script Bash per scaricare file da URL semplifica un&#8217;attivit\u00e0 comune, migliora l&#8217;efficienza e aumenta l&#8217;affidabilit\u00e0 e la sicurezza. Sia che tu sia un sysadmin esperto o che tu abbia appena iniziato a lavorare nel mondo dell&#8217;IT, questo script \u00e8 un&#8217;aggiunta preziosa al tuo kit di strumenti.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p>La <a href=\"https:\/\/www.ninjaone.com\/it\/rmm\">piattaforma di monitoraggio e gestione remota di <span data-contrast=\"auto\">NinjaOne<\/span><span data-contrast=\"none\">\u00a0con un\u2019ottima valutazione<\/span><\/a><a href=\"https:\/\/www.ninjaone.com\/it\/rmm\"><span data-contrast=\"none\">,<\/span><\/a> <span data-contrast=\"auto\">pu\u00f2 consentire l&#8217;implementazione e l&#8217;esecuzione di questo script bash su pi\u00f9 sistemi in modo continuo. Sia che si tratti di scaricare aggiornamenti software, patch di sicurezza o file di dati, l&#8217;integrazione di questo script per scaricare file da URL con NinjaOne pu\u00f2 aiutare ad<\/span> <a href=\"https:\/\/www.ninjaone.com\/it\/rmm\/automazione-it\/\"><span data-contrast=\"none\">automatizzare e semplificare questi processi IT<\/span><\/a><span data-contrast=\"auto\">. Pu\u00f2 garantire la coerenza, ridurre gli errori manuali e risparmiare tempo consentendo distribuzioni di massa. Pertanto, le solide funzionalit\u00e0 di NinjaOne, se utilizzate insieme a questo script per scaricare file da URL, possono migliorare notevolmente l&#8217;efficienza operativa e la produttivit\u00e0.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n","protected":false},"author":35,"featured_media":206734,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"operating_system":[4210],"use_cases":[4269],"class_list":["post-208093","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-macos","use_cases-configurazione-generale"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/script_hub\/208093","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/comments?post=208093"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media\/206734"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/media?parent=208093"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/operating_system?post=208093"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/it\/wp-json\/wp\/v2\/use_cases?post=208093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}