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.
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>
Prova gratis e senza impegno uno dei nostri piani hosting per 14 giorni. Non è richiesto nessun dato di pagamento!
Prova gratisIn 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à.
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.
Vediamo ora alcuni esempi pratici del comando curl con delle opzioni
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.
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.
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.
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.
Prova gratis e senza impegno uno dei nostri piani hosting per 14 giorni. Non è richiesto nessun dato di pagamento!
Prova gratisAnche 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.