Link veloci
- curl vs. wget: qual è la differenza?
- Come installare curl
- La versione ricciolo
- Recupero di una pagina Web con curl
- Salvataggio dei dati in un file
- Utilizzo di una barra di avanzamento per monitorare i download
- Riavvio di un download interrotto
- Recupero delle intestazioni HTTP
- Download di più URL
- Download di file da un server FTP
- Invio di parametri a server remoti
- A volte si arricciano, a volte si stringono
Il Linux curl Il comando può fare molto di più che scaricare file. Scopri cosa curl è capace e quando dovresti usarlo invece di wget.
curl vs. wget: qual è la differenza?
Le persone spesso hanno difficoltà a identificare i punti di forza relativi di IL wget E curl comandi. I comandi hanno alcune sovrapposizioni funzionali. Ciascuno di essi può recuperare file da posizioni remote, ma è qui che finisce la somiglianza.
wget è un fantastico strumento per scaricare contenuti e file. Può scaricare file, pagine Web e directory. Contiene routine intelligenti per attraversare i collegamenti nelle pagine Web e scaricare ricorsivamente contenuti in un intero sito Web. È insuperabile come gestore di download da riga di comando.
curl soddisfa un’esigenza del tutto diversa. Sì, può recuperare file, ma non può navigare in modo ricorsivo in un sito Web alla ricerca di contenuti da recuperare. Che cosa curl in realtà ti consente di interagire con i sistemi remoti effettuando richieste a tali sistemi e recuperando e visualizzando le loro risposte. Tali risposte potrebbero essere contenuti e file di pagine Web, ma possono anche contenere dati forniti tramite un servizio Web o un’API come risultato della “domanda” chiesto dalla richiesta di arricciatura.
E curl non è limitato ai siti web. curl supporta oltre 20 protocolli, inclusi HTTP, HTTPS, SCP, SFTP e FTP. E probabilmente, grazie alla sua gestione superiore delle pipe Linux, curl può essere integrato più facilmente con altri comandi e script.
L’autore di curl ha una pagina web che descrive le differenze che vede fra curl E wget.
Come installare curl
Tra i computer utilizzati per ricercare questo articolo, Fedora 31 e Manjaro 18.1.0 avevano curl già installato. curl doveva essere installato su Ubuntu 18.04 LTS. Su Ubuntu, esegui questo comando per installarlo:
sudo apt-get install curl
La versione ricciolo
IL –version l’opzione fa curlriportare la sua versione. Elenca anche tutti i protocolli supportati.
curl –version
Recupero di una pagina Web con curl
Se indichiamo curl in una pagina web, la recupererà per noi.
curl https://www.bbc.com Ma la sua azione predefinita è scaricarlo nella finestra del terminale come codice sorgente.
Se non lo dici curl vuoi qualcosa archiviato come file, lo scaricherà sempre nella finestra del terminale. Se il file che sta recuperando è un file binario, il risultato può essere imprevedibile. La shell potrebbe tentare di interpretare alcuni dei valori dei byte nel file binario come caratteri di controllo o sequenze di escape.
Salvataggio dei dati in un file
Diciamo a curl di reindirizzare l’output in un file:
curl https://www.bbc.com > bbc.html Questa volta non vediamo le informazioni recuperate, vengono inviate direttamente al file per noi. Poiché non è presente alcun output della finestra del terminale da visualizzare, curl emette una serie di informazioni sullo stato di avanzamento.
Non lo ha fatto nell’esempio precedente perché le informazioni sullo stato di avanzamento sarebbero state sparse nel codice sorgente della pagina web, quindi curl lo soppresse automaticamente.
In questo esempio, curl rileva che l’output viene reindirizzato a un file e che è sicuro generare le informazioni sullo stato di avanzamento.
Le informazioni fornite sono:
- % Totale: L’importo totale da recuperare.
- % Ricevuto: la percentuale e i valori effettivi dei dati recuperati finora.
- %Xferd: la percentuale e l’effettivo inviato, se i dati sono in fase di caricamento.
- Carico di velocità medio: la velocità media di download.
- Caricamento a velocità media: la velocità media di caricamento.
- Tempo totale: la durata totale stimata del trasferimento.
- Tempo impiegato: il tempo trascorso finora per questo trasferimento.
- Tempo rimasto: il tempo stimato rimasto per il completamento del trasferimento
- Velocità attuale: la velocità di trasferimento corrente per questo trasferimento.
Perché abbiamo reindirizzato l’output da curl in un file, ora abbiamo un file chiamato “bbc.html.”
Facendo doppio clic su quel file si aprirà il browser predefinito in modo che venga visualizzata la pagina Web recuperata.
Tieni presente che l’indirizzo nella barra degli indirizzi del browser è un file locale su questo computer, non un sito Web remoto.
Non è necessario reindirizzare l’output per creare un file. Possiamo creare un file utilizzando il file -o (output) opzione e descrizione curl per creare il file. Qui stiamo usando il -o opzione e fornendo il nome del file che desideriamo creare “bbc.html.”
curl -o bbc.html https://www.bbc.com
Utilizzo di una barra di avanzamento per monitorare i download
Per sostituire le informazioni di download basate su testo con una semplice barra di avanzamento, utilizzare il file -# (barra di avanzamento).
curl -x -o bbc.html https://www.bbc.com
Riavvio di un download interrotto
È facile riavviare un download che è stato terminato o interrotto. Iniziamo il download di un file di dimensioni considerevoli. Utilizzeremo l’ultima build di supporto a lungo termine di Ubuntu 18.04. Stiamo utilizzando il –output opzione per specificare il nome del file in cui desideriamo salvarlo: “ubuntu180403.iso.”
curl –output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso Il download inizia e procede verso il completamento.
Se interrompiamo forzatamente il download con Ctrl+C torniamo al prompt dei comandi e il download viene abbandonato.
Per riavviare il download, utilizzare il file -C (continua su) opzione. Questo causa curl per riavviare il download in un punto o offset specificato all’interno del file di destinazione. Se usi un trattino – come compensazione, curl esaminerà la parte già scaricata del file e determinerà l’offset corretto da utilizzare per se stesso.
curl -C – –output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso Il download viene riavviato. curl segnala l’offset al quale si sta riavviando.
Con il -I (head), puoi recuperare solo le intestazioni HTTP. Equivale a inviare il file Comando HEAD HTTP a un server web.
curl -I www.twitter.com Questo comando recupera solo informazioni; non scarica pagine Web o file.
Download di più URL
Utilizzo xargs possiamo scaricarne più di uno URL subito. Forse vogliamo scaricare una serie di pagine web che compongono un unico articolo o tutorial.
Copia questi URL in un editor e salvali in un file chiamato “URL da scaricare.txt.” Possiamo usare xargs A trattare il contenuto di ogni riga del file di testo come parametro a cui verrà alimentato curla sua volta.
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#0 https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#1
Questo è il comando che dobbiamo usare per avere xargs passare questi URL a curl uno alla volta:
xargs -n 1 curl -O < urls-to-download.txt Tieni presente che questo comando utilizza il file -O (file remoto) comando di output, che utilizza una lettera maiuscola “O.” Questa opzione causa curl per salvare il file recuperato con lo stesso nome del file sul server remoto. IL -n 1 l’opzione dice xargs per trattare ogni riga del file di testo come un singolo parametro. Quando esegui il comando, vedrai l’inizio e la fine di più download, uno dopo l’altro. Il controllo nel browser dei file mostra che sono stati scaricati più file. Ognuno porta il nome che aveva sul server remoto.
Download di file da un server FTP
Utilizzando curl con un File Transfer Protocol (FTP) è semplice, anche se è necessario autenticarsi con nome utente e password. Per passare un nome utente e una password con curl Usa il -u (utente) e digitare il nome utente, due punti “:”e la password. Non inserire uno spazio prima o dopo i due punti.
Questo è un server FTP gratuito per test ospitato da Rebex. Il sito FTP di prova ha un nome utente preimpostato di “demo”e la password è “parola d’ordine.” Non utilizzare questo tipo di nome utente e password deboli su una produzione o “vero” server FTP.
curl -u demo:password ftp://test.rebex.net curl capisce che lo stiamo indirizzando a un server FTP e restituisce un elenco dei file presenti sul server.
L’unico file su questo server è a “leggimi.txt” file, di 403 byte di lunghezza. Recuperiamolo. Usa lo stesso comando di poco fa, con il nome del file aggiunto:
curl -u demo:password ftp://test.rebex.net/readme.txt Il file viene recuperato e curl ne visualizza il contenuto nella finestra del terminale.
In quasi tutti i casi, sarà più conveniente avere il file recuperato salvato su disco, piuttosto che visualizzato nella finestra del terminale. Ancora una volta possiamo usare il file -O (file remoto) comando di output per salvare il file su disco, con lo stesso nome file che ha sul server remoto.
curl -O -u demo:password ftp://test.rebex.net/readme.txt Il file viene recuperato e salvato su disco. Possiamo usare ls per verificare i dettagli del file. Ha lo stesso nome del file sul server FTP e ha la stessa lunghezza, 403 byte.
ls -hl readme.txt
Invio di parametri a server remoti
Alcuni server remoti accetteranno i parametri nelle richieste inviate loro. I parametri potrebbero essere utilizzati per formattare i dati restituiti, ad esempio, oppure potrebbero essere utilizzati per selezionare i dati esatti che l’utente desidera recuperare. Spesso è possibile interagire con il web interfacce di programmazione delle applicazioni (API) utilizzando curl.
Come semplice esempio, il ipificare il sito web dispone di un’API che può essere interrogata per accertare il tuo indirizzo IP esterno.
curl https://api.ipify.org Aggiungendo il format parametro al comando, con il valore di “json” possiamo nuovamente richiedere il nostro indirizzo IP esterno, ma questa volta i dati restituiti verranno codificati nel file Formato JSON.
curl https://api.ipify.org?format=json Ecco un altro esempio che utilizza un’API di Google. Restituisce un oggetto JSON che descrive un libro. Il parametro che devi fornire è the Numero di libro standard internazionale numero (ISBN) di un libro. Puoi trovarli sul retro della copertina della maggior parte dei libri, solitamente sotto un codice a barre. Il parametro che useremo qui è “0131103628.”
curl https://www.googleapis.com/books/v1/volumes?q=isbn:0131103628 I dati restituiti sono completi:
A volte si arricciano, a volte si stringono
Se volessi scaricare contenuto da un sito Web e fare in modo che la struttura ad albero del sito Web cercasse ricorsivamente quel contenuto, utilizzerei wget.
Se volessi interagire con un server remoto o un’API ed eventualmente scaricare alcuni file o pagine Web, utilizzerei curl. Soprattutto se il protocollo era uno dei tanti non supportati wget.