GNU/Linux >> Linux Esercitazione >  >> Linux

Comandi cURL più diffusi e popolari in pratica

cURL, abbreviazione di "Client for URLs", è uno strumento a riga di comando per il trasferimento di dati utilizzando vari protocolli. Questo articolo mira a fornire i comandi ampiamente utilizzati e come riferimento pratico.

Sommario

  • Scarica un singolo file
  • Salva l'output di cURL in un file
  • Nascondi barra di avanzamento
  • Recupera più file alla volta
  • Segui le intestazioni di posizione HTTP con l'opzione -L
  • Continua/Riprendi un download precedente
  • Utilizza un proxy con o senza autenticazione
  • Interroga intestazioni HTTP
  • Carica file su server FTP
  • Scarica file dal server FTP
  • Elenca/scarica utilizzando gli intervalli
  • Maggiori informazioni sull'utilizzo dell'opzione Verbose and Trace
  • Invia posta utilizzando il protocollo SMTP
  • Verifica supporto HTTP/2
  • Simula metodi HTTP
  • Fai una richiesta POST con i parametri
  • Conclusione

Puoi invocare curl comando dal tuo terminale senza pensare a come installarlo, poiché è preinstallato sulla maggior parte dei sistemi operativi basati su Linux.

Esistono molti casi d'uso per curl, come:

  • Caricamento FTP
  • Supporto proxy
  • Connessioni SSL
  • Post HTTP

cURL supporta anche l'uso di tutti i seguenti protocolli:DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP , SMTPS, TELNET e TFTP.

Scarica un singolo file

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

curl https://www.gnu.org

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

curl https://www.gnu.org > gnu-org.html

Salva l'output di cURL in un file

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

  • -o (o minuscola) il risultato verrà salvato nel nome del 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 my-gettext.html https://www.gnu.org/software/gettext/manual/gettext.html 

Di conseguenza, ora la pagina gettext.html verrà salvato nel file denominato my-gettext.html . Inoltre puoi notare che quando esegui cURL con -o opzione, visualizza l'indicatore di avanzamento per il download come segue.

Quando usi cURL -O , salverà il contenuto nel file denominato "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 il Progress Meter, per evitare confusione nella stampa. Possiamo usare > , -o , -O opzioni per spostare il risultato in un file.

Nascondi barra di avanzamento

cURL per impostazione predefinita mostra la barra di avanzamento. Per nasconderlo -s (--silent )è possibile utilizzare l'opzione.

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

Se per qualche motivo non funziona sulla tua piattaforma, puoi sempre reindirizzare stderr a /dev/null :

curl -O http://www.gnu.org/software/gettext/manual/gettext.html 2>/dev/null

Recupera più file alla volta

Naturalmente, possiamo scaricare più file in una singola ripresa specificando gli URL sulla riga di comando.

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

Segui le intestazioni di posizione HTTP con l'opzione -L

Tuttavia, 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 in cui si trova la pagina Web effettiva.

Possiamo insistere con cURL per seguire il reindirizzamento usando -L opzione, come mostrato di seguito.

curl -L https://www.google.com

Continua/Riprendi un download precedente

Usando cURL -C opzione, 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 - , quindi cURL troverà da dove iniziare a riprendere il download. Possiamo anche fornire un offset -C <offset> . 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 https://www.gnu.org/software/gettext/manual/gettext.html

Usando curl -C - , possiamo continuare il download da dove era stato interrotto in precedenza.

curl -C - -O https://www.gnu.org/software/gettext/manual/gettext.html

Utilizza un proxy con o senza autenticazione

Se sei dietro un server proxy in ascolto sulla porta 8080 su proxy.tuodominio.com, procedi nel seguente modo:

curl -x proxy.yourdomain.com:8080 -U user:password -O https://www.gnu.org/software/gettext/manual/gettext.html 

dove puoi saltare -U user:password se il tuo proxy non richiede l'autenticazione.

Interroga intestazioni HTTP

Le intestazioni HTTP consentono al server web remoto di inviare informazioni aggiuntive su se stesso insieme alla richiesta effettiva. Inoltre, questo fornisce al cliente i dettagli su come viene gestita la richiesta.

Per eseguire query sulle intestazioni HTTP da un sito Web, eseguire:

curl -I https://www.gnu.org
HTTP/1.1 200 OK
Date: Mon, 13 Jul 2020 21:22:32 GMT
Server: Apache/2.4.7
Content-Location: home.html
Vary: negotiate,accept-language,Accept-Encoding
TCN: choice
Strict-Transport-Security: max-age=63072000
Access-Control-Allow-Origin: (null)
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 13 Jul 2020 21:22:32 GMT
Content-Type: text/html
Content-Language: en

Carica file su server FTP

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

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

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

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

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

curl -u ftpuser:ftppass -T - ftp://ftp.server.com/mynewfile.txt

Il comando precedente otterrà l'input dall'utente da Standard Input e salverà il contenuto nel server ftp con il nome mynewfile.txt .

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

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/mysql.php

Il comando sopra scaricherà il mysql.php file dal server ftp e salvarlo 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.

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 http://ftp.us.debian.org/debian/pool/main/[a-z]/

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

Maggiori informazioni sull'utilizzo dell'opzione Verbose and Trace

Puoi scoprire cosa sta succedendo usando il -v opzione. Questa opzione abilita la modalità dettagliata e stamperà i dettagli.

curl -v https://www.gnu.org

Il comando about produrrà quanto segue:

*   Trying 209.51.188.148:443...
* Connected to www.gnu.org (209.51.188.148) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: CN=emacs.org
*  start date: Jun 17 09:07:40 2020 GMT
*  expire date: Sep 15 09:07:40 2020 GMT
*  subjectAltName: host "www.gnu.org" matched cert's "www.gnu.org"
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
> GET / HTTP/1.1
> Host: www.gnu.org
> User-Agent: curl/7.71.1
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 13 Jul 2020 21:56:04 GMT
< Server: Apache/2.4.7
< Content-Location: home.html
< Vary: negotiate,accept-language,Accept-Encoding
< TCN: choice
< Strict-Transport-Security: max-age=63072000
< Access-Control-Allow-Origin: (null)
< Accept-Ranges: bytes
< Cache-Control: max-age=0
< Expires: Mon, 13 Jul 2020 21:56:04 GMT
< Transfer-Encoding: chunked
< Content-Type: text/html
< Content-Language: en
< 
...

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.

Verifica supporto HTTP/2

Se hai l'ultima versione di cURL, puoi utilizzare il --http2 opzione per verificare se un determinato URL supporta il nuovo protocollo HTTP/2. Pertanto, se il sito supporta HTTP/2, vedrai HTTP/2.0 200 nell'intestazione invece di HTTP/1.1 200 .

curl -I --http2 https://www.opensource.com

Simula metodi HTTP

Il GET viene utilizzato per recuperare risorse da un determinato URL. Il semplice curl https://www.gnu.org/ il comando utilizzerà GET come metodo HTTP predefinito, tuttavia può anche essere specificato utilizzando --request GET-X GET .

curl --request GET https://www.gnu.org

Il POST viene utilizzato per pubblicare informazioni su un server Web (ad esempio un commento su un forum). Questo può essere specificato utilizzando --request POST-X POST .

curl --request POST https://yourwebsite.com

Il DELETE il metodo elimina la risorsa dal server Web associato a un URL specifico. Questo può essere specificato utilizzando --request DELETE-X DELETE .

curl --request DELETE https://yourwebsite.com

Il PUT il metodo crea o sostituisce una risorsa in base ai dati che il client invia al server web. (es. creazione di una nuova pagina web o aggiornamento di una esistente). Questo può essere specificato utilizzando --request PUT-X PUT .

curl --request PUT https://yourwebsite.com

Fai una richiesta POST con parametri

Il comando seguente invierà il animal1 e animal2 parametri, insieme ai valori corrispondenti, a https://yourdomain.com/animals.php

curl --request POST --data "animal1=cat&animal2=dog" https://yourdomain.com/animals.php

Puoi utilizzare questo suggerimento per simulare il comportamento di un normale modulo HTML.

Conclusione

In questo post abbiamo spiegato che cos'è cURL e cosa puoi fare con alcuni comandi di base. Per ulteriori informazioni su cURL, puoi visitare il sito web del progetto.


Linux
  1. 40 comandi di base di Linux usati frequentemente

  2. 10 temi di icone migliori e più popolari per Linux

  3. Comandi Linux:job, bg e fg

  4. Tutorial Subversion:10 comandi SVN più utilizzati con esempi

  5. ip vs ifconfig comanda pro e contro

Cerca, studia e fai pratica con i comandi Linux al volo usando Tldr++

La differenza tra più, meno e la maggior parte dei comandi

Come trovare i comandi più utilizzati su Linux

Oltre 40 comandi Ubuntu 20.04 più utilizzati

I comandi FFmpeg più utili per la conversione di audio e video

90 comandi Linux usati frequentemente dagli amministratori di sistema Linux