logo

Comando Curl in Linux con esempi

Il comando Linux curl viene utilizzato per scaricare o caricare dati su un server tramite protocolli supportati come HTTP, FTP, IMAP, SFTP, TFTP, IMAP, POP3, SCP, ecc. È un'utilità remota, quindi funziona senza l'interazione dell'utente.

Il trasferimento dei dati da un luogo all'altro è uno dei compiti vitali e più utilizzati di un sistema informatico. Tuttavia, sono disponibili molti strumenti GUI per il trasferimento dei dati. Ma quando si lavora dalla riga di comando, diventa un po’ complicato. L'utilità curl ci consente di trasferire dati tramite la riga di comando.

Curl è uno strumento da riga di comando per ottenere e inviare dati come file con sintassi URL. Supporta tutti i protocolli supportati da libcurl perché utilizza libcurl. Curl fornisce il supporto per HTTPS e implementa la verifica del certificato SSL quando viene menzionato un protocollo sicuro per impostazione predefinita, come HTTPS. Curl porterà il certificato del server remoto e controllerà il certificato CA per salvare la validità del server remoto dal garantire che il server remoto sia quello che richiede di essere quando curl si collega a un server remoto tramite HTTPS.

Esistono molte opzioni per definire un certificato CA, ad esempio --capath E --cacerto . L'opzione, ad esempio --cacert, può essere utilizzata per specificare la posizione del file dell'archivio certificati della CA. Se un file di certificato CA non è disponibile nella piattaforma Windows, curl cercherà il nome del file di certificato CA 'curl-ca-bundle.crt' nella sequenza seguente:

  • Directory in cui è presente il programma curl.
  • Directory di lavoro corrente.
  • Directory di sistema (Windows).
  • Rubrica (Windows).
  • Le directory sono menzionate nelle variabili di ambiente %PATH%.

Curl fornirà un messaggio di errore quando il server remoto utilizza un certificato autofirmato o quando il certificato del server remoto non è firmato tramite una CA menzionata nel file di certificazione CA. L'opzione --insecure o -k può essere utilizzata per saltare la verifica del certificato. In alternativa, il certificato CA remoto può essere incluso nel file di archivio dei certificati CA se il server remoto è valido.

Curl fornisce un sacco di trucchi utili come curriculum del trasferimento file, cookie, connessioni SSL, post HTTP, caricamento FTP, autenticazione utente, supporto proxy e altro ancora. Curl è meccanizzato da libcurl per ogni aspetto relativo al trasferimento.

Cos'è libcurl?

libcurl è una libreria di trasferimento URL gratuita lato client. Supporta SMB, SMTP, SCP, RTMP, RTSP, POP3, MQTT, LDAP, Kerberos, IMAP, HTTPS, tunneling proxy HTTP, HTTP PUT, HTTP POST, HTTP/1, Gopher, FTPS, FTP, DICT e cookie. La libreria supporta inoltre l'autenticazione utente più password, proxy, LDAPS, certificati HTTPS, caricamento basato su moduli HTTP, caricamento FTP, ripresa del trasferimento file, TFTP, Telnet, SFTP e schema URL file.

libcurl è compatto. Crea e funziona in modo identico su diverse piattaforme, tra cui Microsoft Windows, UnixWare, Ultrix, Tru64, Symbian, Solaris, RISC OS, QNX Neutrino, OS/2, OpenBSD, NetWare, NetBSD, macOS, Linux, IRIX, iOS, HURD, HP -UX, FreeBSD, DOS, Darwin, OpenVMS, BlackBerry 10, BlackBerry Tablet OS, BeOS, Android, AmigaOS e AIX.

La libreria libcurl è compatibile con IPv6, thread-safe e gratuita. Sono disponibili anche associazioni per oltre 50 linguaggi, tra cui Python, PHP, Java e C/C++.
La libreria libcurl supporta SChannel, gskit su IBM i, NSS, mbed TLS, GnuTLS su Windows, Secure Trasport su iOS e macOS, TLS/SSL tramite OpenSSL, ruggine, BearSSL, wolfSSL, AmiSSL, libressl e Boringssl.

Sintassi:

La sintassi di base per l'utilizzo di curl è la seguente:

 curl [options] [URL...] 

Dalla sintassi precedente,

URL:

La sintassi dell'URL è un URL generale dipendente dal protocollo. Possiamo specificare più URL come segue:

 http://site.{one,two,three}.com 

Opzioni:

Il comando curl supporta le seguenti opzioni della riga di comando:

--abstract-unix-socket : Viene utilizzato per connettersi tramite socket di dominio Unix astratto anziché tramite una rete.

--anyauth: Viene utilizzato per comandare curl per autenticare il metodo da solo per utilizzare il metodo più sicuro. Questa utilità è un'utilità opzionale '--basic, --digest, --ntlm e negozia', ​​utilizzata per impostare un metodo di autenticazione specifico.

-a, --aggiungi: Viene utilizzato per caricare file. Aggiunge il file anziché sovrascriverlo. Se il file specificato non esiste sul server, ne creerà uno.

array Java di stringhe

--di base: Specifica l'uso dell'autenticazione di base HTTP. È l'opzione predefinita del comando curl. È utile per sovrascrivere le impostazioni precedenti.

--cacerto: È specificato per utilizzare il file di certificato particolare per verificare il peer. I file possono avere diversi certificati CA. Il formato standard per i certificati è PEM, quindi tutti i certificati devono essere in esso.

--capath: È specificato per utilizzare la directory particolare per verificare il peer. Possiamo specificare più percorsi separandoli con due punti (:) come 'percorso: percorso2:percorso3'. Il formato standard per i certificati è PEM, quindi tutti i certificati devono essere in esso.

--stato-certo: Viene utilizzato per verificare lo stato del certificato del server. Utilizza la richiesta di stato del certificato o la pinzatura OCSP TLS.

--tipo-cert: Specifica il tipo di certificato curl fornito. Questi certificati possono essere in formato PEM, DER e ENG. Il valore predefinito è PEM. Se viene specificato più volte, l'ultimo valore verrà preso dall'arricciatura.

-E, --certo: È specificato per l'utilizzo del file del certificato client quando si ottiene un file tramite qualsiasi protocollo basato su SSL come HTTPS, FTPS, ecc.

--ciphers: Viene utilizzato per selezionare le cifre da utilizzare nella connessione.

--ssh-compresso: Viene utilizzato per abilitare la compressione SSH integrata. Questa opzione verrà presa come una richiesta dal server, quindi il server potrebbe accettarla o meno.

--compresso: Viene utilizzato per richiedere una risposta compressa utilizzando gli algoritmi curl e salva il documento non compresso. Questa opzione invierà un report per l'arricciatura della codifica non supportata.

-K, --config: Viene utilizzato per descrivere un file di testo per leggere gli argomenti curl. Il ricciolo utilizzerà gli argomenti della riga di comando dal file di testo.

--connect-timeout: Viene utilizzato per specificare il tempo massimo in secondi per il timeout della connessione curl.

--connect-to: Viene utilizzato per creare una richiesta alla determinata coppia di host e porta; altrimenti si collegherà alla coppia successiva. Questa opzione è uno strumento utile per effettuare richieste dirette a un server specifico.

-C, --continua-at: Viene utilizzato per continuare o riprendere un trasferimento di file precedente all'offset specificato.

-c, --cookie-jar: Viene utilizzato per specificare un file particolare in cui vogliamo scrivere tutti i cookie dopo un'operazione riuscita.

-b, --cookie: Viene utilizzato per inoltrare i dati al server HTTP nell'intestazione Cookie.

--crea-dir: Viene utilizzato in congiunzione con '-o? opzione, creerà la gerarchia di directory locale richiesta.

--crlf (SMTP FTP): Viene utilizzato per convertire LF in CRLF durante il caricamento. È uno strumento utile per MVS (OS/390).

--crlfile: Viene utilizzato per specificare (in formato PEM) un elenco di revoche di certificati.

--data-ascii: È un alias per ?-d? opzione.

--delegazione : Viene utilizzato per impostare LEVEL per riconoscere al server ciò che è consentito delegare quando si tratta di credenziali dell'utente.

--digerire: Viene utilizzato per abilitare l'autenticazione HTTP Digest.

-q, --disable: Se utilizzato come primo argomento, ignorerà il file di configurazione curlrc.

--interfaccia-dns: Viene utilizzato per riconoscere il server per inviare le richieste DNS in uscita.

--server-dns: Viene utilizzato per specificare i server DNS anziché i server predefiniti.

-f, --fail: Viene utilizzato per far sì che l'arricciatura fallisca silenziosamente in caso di errori del server.

-F, --forma: Viene utilizzato per emulare un modulo compilato inviato dall'utente.

-P, --ftp-porta: Viene utilizzato per invertire i ruoli di ascoltatore predefiniti durante la connessione tramite FTP.

--ftp-ssl-ccc-modalità: Viene utilizzato per impostare la modalità CCC.

-G, --get: Si usa per specificare i dati con ?-d? opzione da utilizzare in una richiesta HTTP GET anziché in una richiesta POST.

-h, --aiuto: Viene utilizzato per mostrare il manuale della guida con una breve descrizione delle opzioni di utilizzo e supporto.

-0, --http1.0: È specificato per l'utilizzo della versione HTTP 1.0.

--ignore-lunghezza-contenuto: Viene utilizzato per ignorare l'intestazione Content-Length.

-i, --include: Viene utilizzato per includere le intestazioni delle risposte HTTP.

-4, --ipv4: Viene utilizzato per risolvere i nomi in indirizzi IPv4.

-6, --ipv6: Viene utilizzato per risolvere i nomi in indirizzi IPv6.

Protocolli di arricciatura

Curl supporta diversi protocolli:

    DETTO:Ci consente di cercare parole solo con i dizionari.FTP(S):Curl supporta il protocollo FTP utilizzando molte leve e modifiche. Con o senza TLS.FILE:Ci permette di scrivere e leggere il file locale. Curl non consente l'accesso remoto a file://URL, ma funzionerà quando attivo su Microsoft Windows con l'approccio UNC nativo.GOPHER (S):Recupera i file.HTTP(S):Curl supporta HTTP utilizzando numerose varianti e opzioni. Può riprodurre le versioni HTTP 0.9, 1.0, 1.1, 2 e 3 a seconda della riga di comando accurata e delle opzioni di creazione.IMAP(S):Curl scarica le email per noi con il protocollo di lettura della posta. Con o senza TLS.LDAP(S):Curl può implementare per noi la ricerca di directory con o senza l'utilizzo di TLS.MQTT:Curl supporta la versione 3 di MQTT. Il download su MQTT è lo stesso di 'sottoscrivi' a qualsiasi argomento e pubblicare/caricare è uguale a 'pubblicare' su qualsiasi argomento. Su TLS, MQTT non è supportato.POP3(S):Il download tramite un server pop3 rappresenta la ricezione della posta senza o con TLS.RTMP (S):Il protocollo RTMP o Realtime Messaging Protocol viene utilizzato principalmente per lo streaming multimediale del server.RTSP:Curl supporta i download 1.0 di RTSP.SCP:Curl supporta la versione di trasferimento a due scp di SCP.SFTP:Curl supporta SFTP sulla versione 2 di SSH.PMI (S):Curl supporta la versione 1 di SMB per il download e il caricamento.SMTP(S):Caricare contenuti su qualsiasi server SMTP significa trasferire un'e-mail senza o con TLS.TELNET:Informando curl di portare un URL telnet inizia una sessione interattiva in cui trasferisce ciò che legge su stdin e restituisce ciò che il server lo trasferisce.TFTP:Curl può implementare caricamenti e download TFTP.

Installazione del comando curl

Il comando curl viene fornito con la maggior parte dei file Linux distribuzioni. Ma se il sistema non supporta il ricciolo per impostazione predefinita. È necessario installarlo manualmente. Per installare il ricciolo, eseguire i seguenti comandi:

Aggiorna il sistema eseguendo i seguenti comandi:

 sudo apt update sudo apt upgrade 

Ora installa l'utilità curl eseguendo il comando seguente:

 sudo apt install curl 

Verifica l'installazione eseguendo il comando seguente:

 curl -version 

Il comando precedente visualizzerà la versione installata del comando curl.

Recupera il contenuto dell'URL specificato

Per recuperare il contenuto di qualsiasi URL specifico, esegui il comando curl, seguito dall'URL. Considera il comando seguente:

 curl https://www.javatpoint.com/linux-tutorial 

Il comando precedente recupererà i dati della pagina specificata. Considera lo snap seguente dell'output:

Comando Curl di Linux

Dall'output sopra, possiamo vedere che vengono recuperati i dati della pagina dell'URL specificato. Per interrompere l'esecuzione, premere i tasti CTRL+C.

Salvare i dati in un file specifico

Per salvare i dati in un file specifico, passare l'opzione '-o' seguita dalla directory, dal nome del file e dall'URL come segue:

 curl -o / 

Considera il comando seguente:

 curl -o /home/javatpoint/Documents/linux.html https://www.javatpoint.com/linux-tutorial 

Il comando precedente salverà i dati della pagina nel file 'linux.html' nella directory ' /home/javatpoint/Documents/'. Considera l'output seguente:

Comando Curl di Linux

Dal comando precedente, possiamo vedere la quantità totale di dati scaricati, dati ricevuti, tempo medio e alcune altre statistiche sui dati.

Per verificare i dati scaricati, aprire il file eseguendo il comando cat

 cd Documents cat linux.html 

Considera lo snap dell'output seguente:

Comando Curl di Linux

Scaricare un file dal Web

Uno degli usi interessanti e affascinanti di curl è che possiamo scaricare un file dal web. Per scaricare un file dal web, copia il link di download e incollalo con il comando curl. Possiamo passare anche altri argomenti per renderlo più specifico. Ad esempio, scarica l'ultima versione di Ubuntu, copia il file Link per scaricare di Ubuntu dal suo sito ufficiale e incollalo con il comando curl come segue:

 curl -o /home/javatpoint/Documents/ubuntu20.04.iso https://ubuntu.com/download/desktop/thank-you?version=20.04&architecture=amd64 

Il comando precedente scaricherà Ubuntu 20.04 nella directory specificata. Fornire l'estensione file corretta; in caso contrario, scaricherà il file in un formato diverso. Considera l'output seguente:

Comando Curl di Linux

Dall'output precedente, viene scaricato il file ubuntu.iso. Possiamo vedere il tempo di download, la dimensione del file, la velocità di download e altre statistiche. Per interrompere l'esecuzione, premere in qualsiasi momento i tasti CTRL+D.

Riprendi i download interrotti

Potrebbe esserci la possibilità che i download vengano interrotti per qualche motivo. Possiamo riprendere i download utilizzando il comando curl. Per riprendere il file interrotto, passare l'opzione '-C' con il comando curl come segue:

 curl -C 

Il comando precedente riprenderà il download dell'URL specificato.

Scarica più file

Per scaricare più file, specificare più URL separati da uno spazio come segue:

 curl -O 

Il comando precedente scaricherà i dati rispettivamente da entrambi gli URL.

Interroga le intestazioni HTTP

Le intestazioni HTTP contengono informazioni aggiuntive; consente al server web di scaricare queste informazioni. Per interrogare le intestazioni HTTP da un sito Web, esegui il comando con l'opzione '-I' come segue:

 curl -I www.javatpoint.com 

Il comando precedente produrrà l'output seguente:

Comando Curl di Linux