GNU/Linux >> Linux Esercitazione >  >> Linux

Oltre 15 esempi per il comando cURL di Linux

In questo tutorial tratteremo il comando cURL in Linux. Segui mentre ti guidiamo attraverso le funzioni di questa potente utility con esempi per aiutarti a capire tutto ciò di cui è capace.

Puoi utilizzare il comando cURL per scaricare o caricare dati su un server, utilizzando uno dei suoi oltre 20 protocolli supportati. Questi dati potrebbero essere un file, un messaggio di posta elettronica o una pagina Web.

Cos'è il comando cURL?

cURL è uno strumento ideale per interagire con un sito Web o un'API, inviare richieste e visualizzare le risposte al terminale o registrare i dati in un file. A volte puoi usarlo come parte di uno script più grande, consegnando i dati ad altre funzioni per un'ulteriore elaborazione.

Poiché l'utilizzo principale di cURL è recuperare/scaricare file dai server. Svolge bene questa funzione, ma a volte il comando wget è migliore per quel lavoro.

Esamineremo alcune differenze e somiglianze tra wget e cURL più avanti in questo articolo.

Ti mostreremo come utilizzare cURL nelle sezioni seguenti.

Scarica un file

Il comando più semplice che possiamo dare a cURL è scaricare un sito Web o un file. cURL utilizzerà HTTP come protocollo predefinito a meno che non ne specifichi uno diverso. Per scaricare un sito web, basta dare questo comando:

$ curl http://www.google.com

Ovviamente, inserisci qualsiasi sito web o pagina che desideri recuperare.

Eseguire un comando di base come questo senza opzioni aggiuntive sarà raramente utile perché questo dice solo a cURL di recuperare il codice sorgente della pagina che hai fornito.

Quando abbiamo eseguito il nostro comando, il nostro terminale è pieno di codice HTML e altro codice di scripting Web, non qualcosa che ci è particolarmente utile in questo modulo.

Scarichiamo invece il sito Web come documento HTML, in questo modo è possibile visualizzare il contenuto. Aggiungi l'opzione –output a cURL per ottenere questo risultato.

$ curl www.likegeeks.com --output likegeeks.html

Ora possiamo aprire il sito web che abbiamo scaricato e visualizzarlo in un browser web.

Se desideri scaricare un file online, il comando è più o meno lo stesso. Ma assicurati di aggiungere l'opzione –output a cURL come abbiamo fatto nell'esempio sopra.

Se non lo fai, cURL invierà l'output binario del file online al tuo terminale, il che probabilmente ne causerà il malfunzionamento.

Ecco come appare quando avviamo il download di un documento Word da 500 KB.

Il documento word inizia a scaricarsi e mostra l'avanzamento del download nel terminale. Al termine del download, il file sarà disponibile nella directory in cui lo abbiamo salvato.

In questo esempio, non abbiamo specificato una directory, quindi il file è stato salvato nella nostra directory di lavoro attuale (la directory da cui abbiamo eseguito il comando cURL).

Inoltre, hai notato l'opzione -L che abbiamo specificato nel nostro comando cURL? Era necessario per scaricare questo file e ne esamineremo la funzione nella prossima sezione.

Segui reindirizzamento

Se ottieni un output vuoto quando provi a cURL un sito Web, probabilmente significa che il sito Web ha detto a cURL di reindirizzare a un URL diverso. Per impostazione predefinita, cURL non seguirà il reindirizzamento, ma puoi indicarlo con l'opzione -L.

$ curl -L www.likegeeks.com

Nella nostra ricerca per questo articolo, abbiamo scoperto che era necessario specificare -L sulla maggior parte dei siti Web, quindi assicurati di ricordare questo piccolo trucco. Potresti anche volerlo aggiungere alla maggior parte dei comandi cURL per impostazione predefinita.

Interrompi e riprendi il download

Se il download viene interrotto o se devi scaricare un file di grandi dimensioni ma non vuoi farlo tutto in una sessione, cURL offre un'opzione per interrompere e riprendere il trasferimento.

Per interrompere manualmente un trasferimento, puoi semplicemente terminare il processo cURL nello stesso modo in cui interromperesti quasi tutti i processi attualmente in esecuzione nel tuo terminale, con una combinazione ctrl+c.

Il nostro download è iniziato ma è stato interrotto con ctrl+c, ora riprendiamolo con la seguente sintassi:

$ curl -C - example.com/some-file.zip --output MyFile.zip

L'opzione -C è ciò che riprende il nostro trasferimento di file ma nota anche che c'è un trattino (-) subito dopo. Questo dice a cURL di riprendere il trasferimento del file ma di guardare prima la parte già scaricata per vedere l'ultimo byte scaricato e determinare dove riprendere.

Il nostro trasferimento di file è stato ripreso e quindi è stato completato il download.

Specifica timeout

Se vuoi che cURL abbandoni ciò che sta facendo dopo un certo periodo di tempo, puoi specificare un timeout nel comando. Ciò è particolarmente utile perché alcune operazioni in cURL non hanno un timeout per impostazione predefinita, quindi è necessario specificarne uno se non vuoi che si blocchi indefinitamente.

È possibile specificare un tempo massimo da dedicare all'esecuzione di un comando con l'opzione -m. Trascorso il tempo specificato, cURL chiuderà qualsiasi cosa stia facendo, anche se sta scaricando o caricando un file.

cURL prevede che il tempo massimo sia specificato in secondi. Quindi, al timeout dopo un minuto, il comando sarebbe simile al seguente:

$ curl -m 60 example.com

Un altro tipo di timeout che puoi specificare con cURL è la quantità di tempo da dedicare alla connessione. Questo aiuta a garantire che cURL non dedichi una quantità di tempo irragionevole a tentare di contattare un host che è offline o altrimenti irraggiungibile.

Accetta secondi come argomento:

$ curl --connect-timeout 60 example.com

Utilizzo di nome utente e password

È possibile specificare un nome utente e una password in un comando cURL con l'opzione -u. Ad esempio, se volessi autenticarti con un server FTP, la sintassi sarebbe simile a questa:

$ curl -u username:password ftp://example.com

Puoi usarlo con qualsiasi protocollo, ma FTP è spesso usato per semplici trasferimenti di file come questo.

Se volessimo scaricare il file visualizzato nello screenshot qui sopra, emettiamo semplicemente lo stesso comando ma utilizziamo il percorso completo del file.

$ curl -u username:password ftp://example.com/readme.txt

Utilizza proxy

È facile indirizzare cURL all'utilizzo di un proxy prima di connettersi a un host. cURL si aspetta un proxy HTTP per impostazione predefinita, a meno che non specifichi diversamente.

Utilizzare l'opzione -x per definire un proxy. Poiché in questo esempio non è specificato alcun protocollo, cURL presumerà che si tratti di un proxy HTTP.

$ curl -x 192.168.1.1:8080 http://example.com

Questo comando utilizzerà 192.168.1.1 sulla porta 8080 come proxy per connettersi a example.com.

Puoi usarlo anche con altri protocolli. Ecco un esempio di come sarebbe utilizzare un proxy HTTP per eseguire un cURL su un server FTP e recuperare un file.

$ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt

cURL supporta molti altri tipi di proxy e opzioni da utilizzare con tali proxy, ma un'ulteriore espansione andrebbe oltre lo scopo di questa guida. Consulta la pagina man di cURL per ulteriori informazioni su tunneling proxy, proxy SOCKS, autenticazione, ecc.

Scarica file di grandi dimensioni in blocco

Abbiamo già mostrato come interrompere e riprendere i trasferimenti di file, ma cosa accadrebbe se volessimo che cURL scarichi solo una parte di un file? In questo modo potremmo scaricare un file di grandi dimensioni in più blocchi.

È possibile scaricare solo alcune parti di un file, nel caso in cui fosse necessario rimanere sotto un limite di download o qualcosa del genere. Puoi usare il flag –range per farlo.

Devi scrivere la dimensione in byte. Quindi, se volessimo scaricare l'ultimo file .iso di Ubuntu in blocchi da 100 MB, il nostro primo comando sarebbe simile a questo:

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1

Il secondo comando dovrebbe raccogliere al byte successivo e scaricare un altro blocco da 100 MB.

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1
$ curl --range 100000000-199999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part2

Ripeti questo processo finché cURL non scarica tutti i blocchi. L'ultimo passaggio consiste nel combinare i blocchi in un unico file, cosa che può essere eseguita con il comando cat.

$ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso

Certificato cliente

Per accedere a un server utilizzando l'autenticazione del certificato invece dell'autenticazione di base, puoi specificare un file di certificato con l'opzione –cert.

$ curl --cert path/to/cert.crt:password ftp://example.com

cURL ha molte opzioni per il formato dei file dei certificati.

Ci sono anche altre opzioni relative ai certificati:–cacert, –cert-status, –cert-type, ecc. Consulta la pagina man per un elenco completo delle opzioni.

CURL silenzioso

Se desideri eliminare l'indicatore di avanzamento e i messaggi di errore di cURL, l'opzione -s fornisce questa funzione. Continuerà a produrre i dati richiesti, quindi se desideri che il comando sia silenzioso al 100%, devi indirizzare l'output su un file.

Combina questo comando con il flag -O per salvare il file nella directory di lavoro attuale. Ciò garantirà che cURL restituisca con 0 output.

$ curl -s -O http://example.com

In alternativa, puoi usare l'opzione –output per scegliere dove salvare il file e specificare un nome.

$ curl -s http://example.com --output index.html

Ottieni le intestazioni

Prendere l'intestazione di un indirizzo remoto è molto semplice con cURL, devi solo usare l'opzione -I.

$ curl -I example.com

Se lo combini con l'opzione –L, cURL restituirà le intestazioni di ogni indirizzo a cui viene reindirizzato.

$ curl -I -L example.com

Intestazioni multiple

Puoi passare le intestazioni a cURL con l'opzione -H. E per passare più intestazioni, devi solo usare l'opzione -H più volte. Ecco un esempio:

$ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com

Posta (carica) file

Il POST è un modo comune per i siti Web di accettare dati. Ad esempio, quando compili un modulo online, ci sono buone probabilità che i dati vengano inviati dal tuo browser utilizzando il metodo POST. Per inviare dati a un sito Web in questo modo, utilizzare l'opzione -d.

$ curl -d 'name=geek&location=usa' http://example.com

Per caricare un file, invece del testo, la sintassi sarebbe simile a questa:

$ curl -d @filename http://example.com

Usa tutti i flag -d di cui hai bisogno per specificare tutti i diversi dati o nomi di file che stai tentando di caricare.

Puoi usare l'opzione -T se vuoi caricare un file su un server FTP.

$ curl -T myfile.txt ftp://example.com/some/directory/

Invia un'e-mail

Inviare un'e-mail significa semplicemente caricare i dati dal tuo computer (o da un altro dispositivo) su un server di posta elettronica. Poiché cURL è in grado di caricare dati, possiamo utilizzarli per inviare e-mail. Ci sono molte opzioni, ma ecco un esempio di come inviare un'e-mail tramite un server SMTP:

$ curl smtp://mail.example.com --mail-from [email protected] --mail-rcpt [email protected] --upload-file email.txt

Devi formattare correttamente il tuo file di posta elettronica. Qualcosa del genere:

$ cat email.txt

From: Web Administrator <[email protected]>

To: John Doe <[email protected]>

Subject: An example email

Date: Sat, 7 Dec 2019 02:10:15




John,

Hope you have a great weekend.

-Admin

Come al solito, nella pagina man di cURL è possibile trovare opzioni più dettagliate e specializzate.

Leggi messaggio e-mail

cURL supporta IMAP (e IMAPS) e POP3, puoi utilizzarli entrambi per recuperare i messaggi di posta elettronica da un server di posta.

Accedi utilizzando IMAP in questo modo:

$ curl -u username:password imap://mail.example.com

Questo comando elencherà le cassette postali disponibili, ma non visualizzerà alcun messaggio specifico. Per fare ciò, specifica l'UID del messaggio con l'opzione –X.

$ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234'

Differenza tra cURL e wget

A volte le persone confondono cURL e wget perché sono entrambi in grado di recuperare dati da un server. Ma questa è l'unica cosa che hanno in comune.

In questo articolo abbiamo mostrato di cosa è capace cURL. wget fornisce un diverso insieme di funzioni. wget è lo strumento migliore per scaricare siti Web ed è in grado di attraversare in modo ricorsivo directory e collegamenti per scaricare interi siti.

Per scaricare siti Web, utilizzare wget. Se si utilizza un protocollo diverso da HTTP o HTTPS o per caricare file, utilizzare cURL. cURL è anche una buona opzione per scaricare singoli file dal Web, anche se wget funziona bene.

Spero che il tutorial ti sia utile. Continua a tornare.


Linux
  1. 12 Esempi di comandi IP per utenti Linux

  2. Esempi di comandi curl Linux – Parte 2

  3. Comando killall Linux per principianti (8 esempi)

  4. Oltre 15 esempi per il comando yum update

  5. 7 Esempi di comandi Linux df

Linux w Command Tutorial per principianti (5 esempi)

Tutorial sui comandi di Linux curl per principianti (5 esempi)

Tutorial sui comandi Linux ss per principianti (8 esempi)

Comando di localizzazione Linux per principianti (8 esempi)

16 Esempi pratici di comando Linux LS per principianti

Spiegazione del comando Linux mv per principianti (8 esempi)