GNU/Linux >> Linux Esercitazione >  >> Linux

15 pratici esempi di comandi cURL di Linux (esempi di download di cURL)

cURL è un pacchetto software che consiste in uno strumento da riga di comando e una libreria per il trasferimento di dati utilizzando la sintassi degli URL.

cURL supporta vari protocolli come DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet e TFTP.

Questo articolo fornisce 15 esempi pratici di utilizzo di cURL.

1. Scarica un singolo file

Il comando seguente otterrà il contenuto dell'URL e lo visualizzerà nello STDOUT (cioè sul tuo terminale).

$ curl http://www.centos.org

Per memorizzare l'output in un file, devi reindirizzarlo come mostrato di seguito. Verranno visualizzate anche alcune statistiche di download aggiuntive.

$ curl http://www.centos.org > centos-org.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 27329    0 27329    0     0   104k      0 --:--:-- --:--:-- --:--:--  167k

2. Salva l'output di cURL in un file

Possiamo salvare il risultato del comando curl in un file usando le opzioni -o/-O.

  • -o (o minuscola) il risultato verrà salvato nel nome file fornito nella riga di comando
  • -O (O maiuscola) verrà preso il nome del file nell'URL e verrà utilizzato come nome del file per memorizzare il risultato
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

Ora la pagina gettext.html verrà salvata nel file chiamato 'mygettext.html'. Puoi anche notare che quando esegui curl con l'opzione -o, mostra l'indicatore di avanzamento per il download come segue.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 66 1215k   66  805k    0     0  33060      0  0:00:37  0:00:24  0:00:13 45900
100 1215k  100 1215k    0     0  39474      0  0:00:31  0:00:31 --:--:-- 68987

Quando usi curl -O (O maiuscola), salverà il contenuto nel file chiamato "gettext.html" stesso nella macchina locale.

$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html

Nota:quando curl deve scrivere i dati sul terminale, disabilita l'indicatore di avanzamento, per evitare confusione nella stampa. Possiamo usare le opzioni '>'|'-o'|'-O' per spostare il risultato in un file.

Simile a cURL, puoi anche usare wget per scaricare file. Fare riferimento agli esempi di wget per capire come utilizzare wget in modo efficace.

3. Recupera più file alla volta

Possiamo scaricare più file in una singola ripresa specificando gli URL sulla riga di comando.
Sintassi:

$ curl -O URL1 -O URL2

Il comando seguente scaricherà sia index.html che gettext.html e lo salverà con lo stesso nome nella directory corrente.

$ curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html

Tieni presente che quando scarichiamo più file dallo stesso server come mostrato sopra, curl tenterà di riutilizzare la connessione.

4. Segui le intestazioni della posizione HTTP con l'opzione -L

Per impostazione predefinita, CURL non segue le intestazioni della posizione HTTP. Viene anche chiamato reindirizzamenti. Quando una pagina Web richiesta viene spostata in un altro luogo, verrà inviata un'intestazione di posizione HTTP come risposta e indicherà la posizione della pagina Web effettiva.

Ad esempio, quando qualcuno digita google.com nel browser dall'India, verrà automaticamente reindirizzato a "google.co.in". Questo viene fatto in base all'intestazione della posizione HTTP come mostrato di seguito.

$ curl http://www.google.com

<TITLE>302 Moved</TITLE>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.in/">here</A>

L'output sopra indica che il documento richiesto è stato spostato su "http://www.google.co.in/".

Possiamo insistere con curl per seguire il reindirizzamento usando l'opzione -L, come mostrato di seguito. Ora scaricherà il codice sorgente html di google.co.in.

$ curl -L http://www.google.com

5. Continua/Riprendi un download precedente

Usando l'opzione curl -C, puoi continuare un download che è stato già interrotto per qualche motivo. Ciò sarà utile quando scarichi file di grandi dimensioni e il download è stato interrotto.

Se diciamo '-C -', curl troverà da dove iniziare a riprendere il download. Possiamo anche dare un offset '-C '. I byte di offset forniti verranno ignorati dall'inizio per il file di origine.

Avvia un grande download usando curl e premi Ctrl-C per interromperlo tra un download e l'altro.

$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
##############             20.1%

Nota:-# viene utilizzato per visualizzare una barra di avanzamento anziché un indicatore di avanzamento.

Ora il download di cui sopra è stato interrotto al 20,1%. Usando "curl -C -", possiamo continuare il download da dove era stato interrotto in precedenza. Ora il download continua dal 20,1%.

curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
###############            21.1%

6. Limita la velocità di trasferimento dei dati

Puoi limitare la quantità di trasferimento dei dati utilizzando l'opzione –limit-rate. Puoi specificare la velocità di trasferimento massima come argomento.

$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

Il comando precedente limita il trasferimento dei dati a 1000 byte/secondo. curl può utilizzare una velocità di trasferimento più elevata per un breve lasso di tempo. Ma in media, arriverà a circa 1000B/secondo.

Quello che segue era l'indicatore di avanzamento per il comando precedente. Puoi vedere che la velocità attuale è vicina ai 1000 byte.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  1 1215k    1 13601    0     0    957      0  0:21:40  0:00:14  0:21:26   999
  1 1215k    1 14601    0     0    960      0  0:21:36  0:00:15  0:21:21   999
  1 1215k    1 15601    0     0    962      0  0:21:34  0:00:16  0:21:18   999

7. Scarica un file solo se è stato modificato prima/dopo il tempo indicato

Possiamo ottenere i file che vengono modificati dopo un determinato periodo di tempo usando l'opzione -z in curl. Funzionerà sia per FTP che per HTTP.

$ curl -z 21-Dec-11 http://www.example.com/yy.html

Il comando precedente scaricherà yy.html solo se viene modificato dopo la data e l'ora specificate

$ curl -z -21-Dec-11 http://www.example.com/yy.html

Il comando precedente scaricherà yy.html, se viene modificato prima della data e dell'ora specificate.

Si prega di fare riferimento a "man curl_getdate" per le varie sintassi supportate per l'espressione di data

8. Supera l'autenticazione HTTP in cURL

A volte, i siti Web richiederanno un nome utente e una password per visualizzare il contenuto (può essere fatto con il file .htaccess). Con l'aiuto dell'opzione -u, possiamo passare quelle credenziali da cURL al server web come mostrato di seguito.

$ curl -u username:password URL

Nota:per impostazione predefinita curl utilizza l'autenticazione HTTP di base. Possiamo specificare un altro metodo di autenticazione usando –ntlm | –digerire.

9. Scarica file dal server FTP

cURL può essere utilizzato anche per scaricare file da server FTP. Se il percorso FTP specificato è una directory, per impostazione predefinita elencherà i file nella directory specifica.

$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

Il comando precedente scaricherà il file xss.php dal server ftp e lo salverà nella directory locale.

$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

Qui, l'URL fornito si riferisce a una directory. Quindi cURL elencherà tutti i file e le directory sotto l'URL specificato

Se non conosci FTP/sFTP, fai riferimento al tutorial ftp sftp per principianti.

10. Elenca/Scarica utilizzando gli intervalli

cURL supporta gli intervalli da fornire nell'URL. Quando viene fornito un intervallo, verranno scaricati i file corrispondenti all'interno dell'intervallo. Sarà utile scaricare i pacchetti dai siti mirror FTP.

$ curl   ftp://ftp.uk.debian.org/debian/pool/main/[a-z]/

Il comando precedente elencherà tutti i pacchetti dagli intervalli a-z nel terminale.

11. Carica file su server FTP

Curl può essere utilizzato anche per caricare file sul server FTP con l'opzione -T.

$ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

Il comando precedente caricherà il file denominato myfile.txt sul server FTP. Puoi anche caricare più file contemporaneamente utilizzando le operazioni sull'intervallo.

$ curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com

Opzionalmente possiamo usare "." per ottenere l'input da STDIN e trasferirlo al telecomando.

$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

Il comando precedente otterrà l'input dall'utente da Standard Input e salverà i contenuti nel server ftp con il nome "myfile_1.txt".

Puoi fornire una "-T" per ogni URL e la coppia specifica cosa caricare e dove.

12. Ulteriori informazioni utilizzando l'opzione Verbose and Trace

Puoi sapere cosa sta succedendo usando l'opzione -v. -v opzione abilita la modalità dettagliata e stamperà i dettagli

curl -v http://google.co.in

Il comando about produrrà quanto segue

* About to connect() to www.google.co.in port 80 (#0)
*   Trying 74.125.236.56... connected
* Connected to www.google.co.in (74.125.236.56) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.21.0 (i486-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
> Host: www.google.co.in
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Date: Tue, 10 Apr 2012 11:18:39 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< Set-Cookie: PREF=ID=7c497a6b15cc092d:FF=0:TM=1334056719:LM=1334056719:S=UORpBwxFmTRkbXLj; expires=Thu, 10-Apr-2014 11:18:39 GMT; path=/; domain=.google.co.in
.
.

Se hai bisogno di informazioni più dettagliate, puoi usare l'opzione –trace. L'opzione di traccia abiliterà un dump di traccia completo di tutti i dati in entrata/in uscita nel file specificato

=> Send header, 169 bytes (0xa9)
0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1..
0010: 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 72 6c User-Agent: curl
..
0060: 2e 32 2e 33 2e 34 20 6c 69 62 69 64 6e 2f 31 2e .2.3.4 libidn/1.
0070: 31 35 20 6c 69 62 73 73 68 32 2f 31 2e 32 2e 36 15 libssh2/1.2.6
0080: 0d 0a 48 6f 73 74 3a 20 77 77 77 2e 67 6f 6f 67 ..Host: www.goog
0090: 6c 65 2e 63 6f 2e 69 6e 0d 0a 41 63 63 65 70 74 le.co.in..Accept
00a0: 3a 20 2a 2f 2a 0d 0a 0d 0a                      : */*....
== Info: HTTP 1.0, assume close after body
<= Recv header, 17 bytes (0x11)
0000: 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d HTTP/1.0 200 OK.
0010: 0a

Questa opzione dettagliata e traccia tornerà utile quando l'arricciatura non riesce per qualche motivo e non sappiamo perché.

13. Ottieni la definizione di una parola usando il protocollo DICT

È possibile utilizzare cURL per ottenere la definizione di una parola con l'aiuto del protocollo DICT. Dobbiamo passargli un URL del server del dizionario.

$ curl dict://dict.org/d:bash

Il comando precedente elencherà il significato di bash come segue

151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48"
Bash \Bash\, v. t. [imp. & p. p. {Bashed}; p. pr. & vb. n.
   {Bashing}.] [Perh. of imitative origin; or cf. Dan. baske to
   strike, bask a blow, Sw. basa to beat, bas a beating.]
   To strike heavily; to beat; to crush. [Prov. Eng. & Scot.]
   --Hall Caine.
   [1913 Webster]

         Bash her open with a rock.               --Kipling.
   [Webster 1913 Suppl.]
.
151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48"
Bash \Bash\, n.
   1. a forceful blow, especially one that does damage to its
      target.
      [PJC]
.
.

Ora puoi vedere che utilizza "The Collaborative International Dictionary of English". Ci sono molti dizionari sono disponibili. Possiamo elencare tutti i dizionari usando

$ curl dict://dict.org/show:db

jargon "The Jargon File (version 4.4.7, 29 Dec 2003)"
foldoc "The Free On-line Dictionary of Computing (26 July 2010)"
easton "Easton's 1897 Bible Dictionary"
hitchcock "Hitchcock's Bible Names Dictionary (late 1800's)"
bouvier "Bouvier's Law Dictionary, Revised 6th Ed (1856)"

Ora, per trovare il vero significato di Bash nel computer, possiamo cercare bash nel dizionario "foldoc" come segue

$ curl dict://dict.org/d:bash:foldoc

Il risultato sarà,

bash

   Bourne Again SHell.  {GNU}'s {command interpreter} for {Unix}.
   Bash is a {Posix}-compatible {shell} with full {Bourne shell}
   syntax, and some {C shell} commands built in.  The Bourne
   Again Shell supports {Emacs}-style command-line editing, job
   control, functions, and on-line help.  Written by Brian Fox of
   {UCSB}.

Per maggiori dettagli in merito a DICT, leggere RFC2229

14. Usa proxy per scaricare un file

Possiamo specificare cURL per utilizzare il proxy per eseguire l'operazione specifica usando l'opzione -x. Dobbiamo specificare l'host e la porta del proxy.

$ curl -x proxysever.test.com:3128 http://google.co.in

15. Invia posta utilizzando il protocollo SMTP

cURL può essere utilizzato anche per inviare posta utilizzando il protocollo SMTP. È necessario specificare l'indirizzo da, l'indirizzo e l'indirizzo IP del server di posta come mostrato di seguito.

$ curl --mail-from [email protected] --mail-rcpt [email protected] smtp://mailserver.com

Una volta inserito il comando sopra, attenderà che l'utente fornisca i dati alla posta. Dopo aver composto il tuo messaggio, digita . (punto) come ultima riga, che invierà immediatamente l'e-mail.

Subject: Testing
This is a test mail
.

Linux
  1. Esempi di comandi curl Linux – Parte 2

  2. Comando cp in Linux:7 esempi pratici

  3. Comando di arresto di Linux:5 esempi pratici

  4. 5 Esempi pratici del comando dd in Linux

  5. 10 esempi pratici di comandi Linux nm

12 Esempi pratici di In Command in Linux

I 50 esempi pratici del comando SED in Linux

15 esempi pratici di comando Rsync in Linux

5 esempi pratici di Tail Command in Linux

echo Command in Linux:7 esempi pratici

Pratico comando Ping negli esempi di Linux