GNU/Linux >> Linux Esercitazione >  >> Linux

Impara a usare il comando CURL in Linux con questi esempi

Cos'è CURL?

CURL è uno strumento per il trasferimento dei dati. È inoltre disponibile come libreria per sviluppatori e come CLI per casi d'uso basati su terminale. Entrambi hanno lo stesso motore all'interno (la verità è che lo strumento CLI è solo il programma che usa la libreria nascosta).

CURL funziona con ogni protocollo che potresti aver utilizzato. Vai su questo sito per verificare se CURL funziona con il tuo protocollo di destinazione o meno.

Cosa può fare CURL?

Hmm... Tutto ciò che riguarda il trasferimento dei dati. Tutti devono aver usato un browser. Anche adesso stai leggendo questo articolo tramite il tuo browser. Quello che fa il browser, richiede una pagina e la ottiene come risposta. Può scrivere e leggere i cookie. E poi lo rende (visualizzando il contenuto, le immagini ed eseguendo gli script JS).

CURL può fare tutto un browser tranne il rendering dell'ultima parte perché non è correlato al trasferimento dei dati.

In conclusione, CURL può scaricare pagine HTML, compilare moduli HTML e inviarli, scaricare file da un server FTP/HTTP e caricare file sullo stesso e leggere/scrivere cookie.

Questo lo rende uno strumento eccellente da utilizzare in scripting, debugging e analisi forense, ecc.

Esempi di comandi Curl

Vediamo cosa puoi fare con Curl.

1. Ottieni una risposta da un server

Tutto dal server è una risposta alla richiesta. Quindi ottenere una pagina HTML equivale a scaricare un file.

Per ottenere una risposta HTML da http://info.cern.c,

curl http://info.cern.ch/

Per ottenere l'elenco dei post come risposta da un server ( https://jsonplaceholder.typicode.com/posts),

curl https://jsonplaceholder.typicode.com/posts

Poiché sappiamo come ottenere una risposta da un server, puoi scaricare un file (ad esempio il logo di Google).

curl https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png

Il comando precedente scaricherà i dati dell'immagine binaria che non puoi visualizzare nel terminale. Devi salvarli e quindi utilizzare un visualizzatore di foto per vederli.

Nota che vari flag di opzione possono essere posizionati ovunque sul comando invece dell'ordine rigoroso. Quindi non preoccuparti se hai posizionato qualche opzione nell'ultimo mentre gli esempi avevano il flag all'inizio.

2. Salva il file con un nome file predefinito

Ogni file servito su Internet ha un nome file. Per utilizzare lo stesso nome file del nome file scaricato, usa il flag -O.

curl -O http://www.google.com/robots.txt

3. Salva il file con nome personalizzato

Per salvare il nome del file con il tuo nome personalizzato, usa il flag -o seguito (rigorosamente) da un nome personalizzato.

curl -O http://www.google.com/robots.txt googleRobots.txt

4. Scarica più file

Per scaricare più file, separali con uno spazio bianco.

curl url1 url2 url3

Se vuoi usare il flag -O per tutti gli URL, usa

curl url1 url2 url3 -O -O -O 

La stessa soluzione dovrebbe essere eseguita per qualsiasi flag. Questo perché la prima occorrenza di un determinato flag è per il primo URL, il secondo flag è per il secondo URL e così via.

5. Scarica una serie di file

curl ha la capacità integrata di scaricare una serie di file dal server. Questo può essere illustrato dal seguente esempio.

curl http://www.google.com/logo/logo[1-9].png

Il comando precedente scarica i file da logo1.png, logo2.png, logo3.png e fino a logo9.png.

6. Scarica un file solo se più recente

Per scaricare un file solo se l'ora di modifica del file è più recente dell'ora indicata.

curl url -z "DD MMM YY MM:HH:SS"

7. Riprendi il download

Se hai già trasferito parzialmente un file, puoi riprendere il trasferimento utilizzando il flag -C. L'offset da cui è necessario continuare il trasferimento deve essere passato come parametro al flag -C.

curl -C 1024 http://seeni.linuxhandbook.org/files/largeFile.mpv -O

8. Carica un file

Per caricare un file sul server, è necessario utilizzare il flag -T seguito dal percorso del file sul sistema locale.

curl -T uploadFile.txt http://upload.linuxhandbook.org/files

9. Elimina un file

Per eliminare un file chiamato deleteFile.txt in un server, è possibile utilizzare il flag -X destinato a qualsiasi verbo/metodo HTTP (come GET, POST, PUT, DELETE, PATCH). La maggior parte dei server FTP avrà configurato il metodo DELETE se non tutti i metodi HTTP avanzati.

curl -X DELETE http://upload.linuxhandbook.org/files/deleteFile.txt

Puoi anche modificare il comando precedente per qualsiasi metodo HTTP per eseguire l'attività corrispondente. Ad esempio, se il tuo server consente il metodo TRUNCATE (questo è un metodo HTTP inventato, non standard) che rimuove solo il contenuto del file e non il file, puoi usare il comando simile al seguente.

curl -X  TRUNCATE http://upload.linuxhandbook.org/files/mysql.dump

Sopra menzionati sono i principali usi del ricciolo. Ma potrebbero esserci difficoltà che devono essere combattute come reindirizzamenti, autenticazione utente, certificati SSL, ecc. Possiamo chiamarli componenti aggiuntivi in ​​quanto sono solo opzionali ma rimangono comunque cruciali per determinati scopi. Vediamo alcuni di questi componenti aggiuntivi e come gestirli con curl nella prossima sezione.

10. Evita i reindirizzamenti

Quando richiedi http://www.google.com , ti verrà offerta solo la pagina regionale come www.google.co.in. Questo viene fatto con l'aiuto di reindirizzamenti (pacchetti HTTP con codici di stato nell'intervallo 300-399).

Puoi evitare i reindirizzamenti con l'opzione L.

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

11. Autenticazione

Quando il server è configurato per essere utilizzato solo per determinate persone con credenziali, verranno forniti loro nome utente e password. Si può effettuare il login con l'aiuto di -u flag.

curl -u username:password http://seeni.linuxhandbook.org/files/tasks.txt

12. Limita il trasferimento di dati

Se si desidera imporre un limite di trasferimento dei dati, utilizzare il flag –limit-rate. Il comando seguente tenta di scaricare il file con limite di velocità di 10 K.

curl --limit-rate 10K http://seeni.linuxhandbook.org/files/logoDetails.tgz

13. Mostra/Nascondi stato del trasferimento

Se la risposta viene reindirizzata dal terminale come il download, il caricamento e poi curl mostra automaticamente lo stato/l'indicatore di avanzamento per il trasferimento.

Se non vuoi vedere l'indicatore di avanzamento, aggiungi semplicemente il comando con il flag -s. I progressi non verranno mostrati per la risposta diretta al terminale.

14. Ignora i certificati SSL

Ricordi le situazioni in cui è necessario fornire un'eccezione al certificato di sicurezza per visitare alcuni siti Web? Se ritieni attendibili le origini e desideri eseguire un trasferimento di dati, puoi ignorare la convalida del certificato SSL utilizzando il flag -k.

curl -k https://notSoSecure.org/files/logoDetails.tgz

15. Ottieni anche informazioni sull'intestazione

Per visualizzare le informazioni sull'intestazione insieme ai dati trasferiti, usa il flag -i.

curl -i http://www.google.com/robots.txt

16. Ottieni solo informazioni sull'intestazione

Se vuoi solo le intestazioni e non i dati, usa il flag -I

curl -I http://www.google.com/robots.txt

17. Cambia User Agent

Alcuni siti Web e server non consentono a determinati tipi di dispositivi di accedere ai loro sistemi. Ma come fanno a sapere che stiamo usando un tipo specifico di dispositivo? Ciò è dovuto al campo dell'intestazione HTTP User-Agent. Possiamo cambiare questo User Agent con -A flag.

curl -A "Mozilla FireFox(42.0)" http://notAllowedForCLI.sites.org/randomFile.png

18. Invio dati al Server

Se il server ha bisogno di alcuni dati come token o chiave API, usa il flag -d per inviare i dati. I dati che devono essere inviati devono seguire il flag nel comando. Si può usare "&" per combinare più dati. Questo di solito viene fatto dalle richieste GET e POST nei browser. Questo è uno dei modi in cui puoi inviare le informazioni del tuo modulo.

curl -d "token=34343abvfgh&name='seeni'" http://api.restful.org/getcontent

19. Scrivi i cookie in un file

I cookie sono alcune piccole informazioni che consentono di mantenere una sessione con un protocollo HTTP stateless. Se vuoi saperne di più sui cookie, fai riferimento a questa fantastica risorsa.

Per scrivere i cookie in un file, è necessario utilizzare il flag -c seguito dal nome del file del cookie.

curl -c googleCookie.txt http://www.google.com/files

20. Lettura dei cookie da un file

Per leggere un cookie dal file, è possibile utilizzare il flag -b seguito dal nome del file del cookie.

curl -b googleCookie.txt http://www.google.com/files

Nota che -b flag legge solo il cookie dal file. Quindi, se il server invia nuovamente un altro cookie, potrebbe essere necessario utilizzare l'opzione -c per scriverli.

21. Inizia una nuova sessione

Se vuoi avviare una nuova sessione eliminando i cookie, usa il flag -j. Avvia una nuova sessione anche se hai fornito il file cookie da leggere con il flag -b.

curl -b googleCookie.txt http://www.google.com/files -j

Congratulazioni! Sei arrivato alla fine. Se trovi utile questo articolo, condividilo con i tuoi amici e seguici sui social. Se hai suggerimenti su questo articolo o qualsiasi altro argomento, non esitare a rilasciarli di seguito.


Linux
  1. Comando wc Linux con esempi

  2. Come utilizzare il comando IP in Linux con esempi

  3. Comando alias Linux:come usarlo con esempi

  4. Ordina il comando in Linux con esempi

  5. comando chattr in Linux con esempi

Comando Linux WC con esempi

Impara a usare il comando Chmod con questi esempi

Utilizzo del comando Linux mv con esempi

Comando di montaggio Linux con esempi

Comando gawk Linux con esempi

Linux make Command con esempi