Il comando curl in Linux può essere utilizzato per inviare e ricevere dati da un server remoto.

Conoscere e usare al meglio questo strumento permette di effettuare diverse attività come testare un URL, scaricare un file, inviare richieste HTTP, ricevere dati da un server, caricare file su un server e così via, utilizzando uno dei protocolli supportati (HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, DICT, TELNET, LDAP o FILE).

Il comando è progettato per funzionare senza l’interazione dell’utente.

Sintassi del comando curl 

La sintassi di base del comando curl è abbastanza semplice.

È molto simile al comando wget, che è un altro comando di Linux che viene utilizzato per scaricare file da Internet. La sintassi è la seguente:

 > curl <URL>

In questo caso, <URL> è l’indirizzo del server remoto da cui si desidera scaricare o inviare dati.

Il comando curl può anche essere utilizzato con un’ampia varietà di opzioni e parametri per offrire maggiore flessibilità. 

Opzioni del comando curl 

Come gli altri comandi di Linux, il comando curl include molte opzioni per usarlo nel modo più completo, efficace e versatile, offrendo maggiore controllo all’utente.

Nella lista di seguito, includiamo alcune delle opzioni più comunemente utilizzate:

– -i: consente di visualizzare l’intestazione HTTP nella risposta. 

– -H: invia una richiesta head. Recupera solo le informazioni d’intestazione sul documento, senza i dati del documento. In questo modo si può ispezionare il contenuto di prima di decidere se scaricarlo per intero con una richiesta GET

– -X: specifica il tipo di richiesta HTTP da utilizzare (es. GET, POST, PUT, ecc.). 

– -d: invia dati POST come parte della richiesta. 

– -b: invia i cookie come parte della richiesta.

 – -u: permette di specificare un nome utente e una password per l’autenticazione. 

– -O: salva la risposta in un file. 

– -v: come in altri comandi attiva la modalità “verbose” e visualizza informazioni dettagliate sulla richiesta. 

-T, –upload-file <file>: Carica il file sul server.

-k, –insecure: Consente le connessioni a siti SSL senza certificazioni.

–trace <file>: Registra tutti i dati ricevuti e inviati nel file specificato. 

–trace-ascii <file>: Registra tutti i dati nel file specificato, utilizzando il formato ASCII. –trace-time: Aggiunge il timestamp alle voci del registro di traccia.

Esempi pratici nell’uso del comando curl

 Vediamo ora alcuni esempi pratici del comando curl con delle opzioni

  • Come usare il comando curl per scaricare un file 

Per scaricare un file da un server remoto con curl, è sufficiente eseguire il seguente comando: 

> curl <URL> -O 

Questo comando scaricherà il file nella directory corrente. 

  • Come usare il comando curl per inviare una richiesta POST 

Per inviare una richiesta POST (una richiesta POST è una richiesta di invio dati al server) con curl, è possibile utilizzare l’opzione -d in questo modo:

 > curl <URL> -d “<dati>” 

Questo comando invierà i dati POST specificati all’URL specificato. 

  • Come usare il comando curl per inviare una richiesta con autenticazione 

Per inviare una richiesta con autenticazione, è possibile utilizzare l’opzione -u in questo modo: 

> curl <URL> -u <username>:<password> 

Questo comando invierà una richiesta all’URL specificato utilizzando l’autenticazione fornita. 

Problemi frequenti con il comando curl

Uno dei problemi più comuni con il comando curl è che non tutte le opzioni sono supportate su tutti i sistemi operativi.

Inoltre, è importante notare che alcune opzioni possono essere incompatibili con altre.

Ad esempio, l’opzione -X non può essere utilizzata con l’opzione -d. 

I timeout sono un problema comune quando si usa curl con una connessione a bassa velocità o da un server che impiega troppo tempo a rispondere.

Anche gli errori SSL possono influenzare l’uso di curl e si presentano di solito quando il server non è configurato per utilizzare la versione SSL corretta o quando il server utilizza un certificato SSL obsoleto.

Bisogna ricordare che curl non segue i reindirizzamenti per impostazione predefinita. Ciò significa che se un URL viene reindirizzato, curl non lo seguirà automaticamente.

Inoltre curl non conserva i cookie quando effettua le richieste. Ciò significa che se un utente deve effettuare il login a un sito web per accedere ai suoi contenuti, curl non sarà in grado di farlo senza una configurazione aggiuntiva.