Ottieni cURLy: 10 cose utili che puoi fare con cURL

Ottieni cURLy: 10 cose utili che puoi fare con cURL

Quando iniziamo a conoscere gli strumenti da riga di comando, tendiamo a vederli come un unico scopo. Ti è stato insegnato che





cat

stampa il contenuto del file,





ls

elenca tutti gli elementi in una directory e





du

mostra l'utilizzo dello spazio su disco. Tuttavia, molti strumenti da riga di comando hanno dozzine di opzioni, tutte ben descritte nella loro

man

File. Alcuni di loro possono fare miracoli se combinati con altri comandi.



Naturalmente, è irragionevole aspettarsi che qualcuno ricordi ogni singola opzione. Con questo in mente, è bene rinfrescare di tanto in tanto il nostro conoscenza dei comandi di Linux , perché potresti scoprire nuovi usi per loro.

Questa volta ci concentriamo su arricciare , uno strumento per il trasferimento di dati tramite una serie di protocolli Internet come HTTP(S), FTP, Telnet, LDAP, IMAP, POP3, SMTP e altro.





In termini semplificati, cURL esegue varie richieste da un client a un server, stabilendo una connessione tra di loro tramite un protocollo specifico e le sue modalità associate. Ad esempio, come client HTTP, cURL può inviare una richiesta per visualizzare o scaricare contenuto (metodo di richiesta GET) o per pubblicare contenuto tramite un modulo su un sito Web (metodo di richiesta POST). Molte applicazioni e servizi web consentono a cURL di interagire con le proprie API (Application Programming Interface).

Poiché le loro funzionalità si sovrappongono in una certa misura, cURL e wget vengono spesso confrontati tra loro. Entrambi gli strumenti possono scaricare contenuti da Internet, ma wget supporta download ricorsivi, web scraping e generalmente sembra più semplice da usare. Se vuoi solo scaricare file dal terminale, wget è probabilmente una scelta migliore.





D'altra parte, se hai bisogno di metodi di autenticazione HTTP avanzati e vuoi caricare file e scaricarli, vale la pena imparare a usare cURL. Inoltre, wget supporta solo HTTP(S) e FTP, mentre cURL copre un'ampia gamma di protocolli. Ciò significa che cURL può fare cose più interessanti e qui ci sono dieci esempi per dimostrarlo.

1. Ottieni il bollettino meteorologico

Se qualcuno ti dicesse di controllare il meteo dal terminal, ti aspetteresti di vedere dei numeri noiosi. Non con questo comando.

curl http://wttr.in/LOCATION

Le informazioni sono fornite da un'applicazione CLI chiamata andiamo , ma se non vuoi installarlo, cURL può recuperare la previsione dal suo frontend web wttr.in. Tutto ciò di cui ha bisogno è la posizione per la quale si desidera la previsione. Basta digitare il nome di una città, il codice dell'aeroporto o il tuo attuale indirizzo IP. Una nuova funzione mostra le informazioni sulle fasi lunari se digiti:

curl wttr.in/Moon

2. Scarica file e riprendi download

Il download di file è qualcosa che di solito facciamo nel browser. A volte vorrai usare un download manager; ad esempio, quando si scaricano più file contemporaneamente o quando si desidera mettere in pausa i download. Sebbene cURL non sia una scelta popolare per i download simultanei (wget è invece consigliato), puoi comunque usarlo a tale scopo combinando le sue potenti opzioni (switch). Per prima cosa avrai bisogno di un collegamento diretto al file. In questo esempio, utilizzeremo un PDF della rivista Linux Voice.

curl -O -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

L'opzione O maiuscola (-O) fa sì che cURL salvi il file con il nome file predefinito (di solito quello del collegamento stesso). Se volessi salvarlo con un nome diverso, useresti la o minuscola seguita dal nuovo nome:

curl -o magazine.pdf -C - https://www.linuxvoice.com/issues/016/Linux-Voice-Issue-016.pdf

Per impostazione predefinita, i file vengono salvati nella directory corrente (verificalo con il tasto

pwd

comando). Per salvarli altrove, fornire il percorso dopo l'opzione -o. L'opzione -C - consente a cURL di riprendere il download. Lo metteresti in pausa premendo Ctrl + C nel terminale e riprenderai eseguendo di nuovo lo stesso comando di download:

cURL mostra l'avanzamento del download in un formato simile a una tabella, con colonne contenenti informazioni sulla velocità di download, la dimensione totale del file, il tempo trascorso e altro. Se non ti piace, puoi optare per una barra di avanzamento più semplice aggiungendo -# o --progress-bar al tuo comando cURL.

Per scaricare più file contemporaneamente, basta elencare i collegamenti uno dopo l'altro:

curl -O file1.txt -O file2.pdf -O file3.zip

Con l'aiuto di altri strumenti da riga di comando, possiamo scaricare in batch tutte le immagini PNG e JPG da un blog di Tumblr:

curl http://concept-art.tumblr.com/ | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2 | while read l; do curl '$l' -o '${l##*/}'; done

In questo caso,

cut

e

grep

raccogliere informazioni sui nomi dei file e formattarli in modo che vengano visualizzati solo i file con le estensioni specificate. Se esegui il comando senza l'ultima pipe:

curl http://concept-art.tumblr.com/ | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2

otterrai solo un elenco di file che soddisfano i nostri criteri, ma non verranno effettivamente scaricati. cURL può ottenere un elenco di immagini da un intervallo di pagine, a condizione che il blog utilizzi l'impaginazione standard:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2

È possibile modificare l'intervallo cambiando i numeri tra parentesi quadre. Di nuovo, questo comando elencherà solo le immagini; per scaricarli, esegui il comando completo nella directory in cui vuoi salvare le immagini:

curl http://concept-art.tumblr.com/page/[1-7] | grep -o 'src='[^']*.[png-jpg]'' | cut -d' -f2 | while read l; do curl '$l' -o '${l##*/}'; done

Se sei esperto in espressioni regolari , puoi migliorare l'aspetto e l'efficienza di questo comando e condividere il risultato nei commenti.

3. Gestire i file su un server FTP

Non si sente molto parlare di FTP in questi giorni, ma ciò non significa che sia obsoleto. In effetti, molti progetti open source e distribuzioni Linux condividono il loro software su server FTP. Poiché FTP è supportato da cURL, puoi usarlo come un semplice client FTP per caricare e scaricare file. Puoi sfogliare i file su un server FTP accedendo alle directory:

curl ftp://ftp.debian.org/debian/

Per inserire una sottodirectory, digitarne il nome seguito da una barra (/).

Il download dei file è simile ai download HTTP descritti nella sezione precedente. Puoi usare -o o -O e aggiungere -C - se vuoi mettere in pausa i download.

curl -O ftp://ftp.heanet.ie/mirrors/linuxmint.com/stable/17.3/linuxmint-17.3-kde-64bit.iso

Sebbene cURL non supporti i download ricorsivi (ricorda, wget lo fa!), Può comunque scaricare una serie di file contemporaneamente. L'unica condizione è che i nomi dei file seguano uno schema. Ad esempio, potremmo scaricare da un server che ospita sfondi in cui gli sfondi sono tutti denominati 'wallpaperNUMBER':

curl -O ftp://ftp.myserver.com/files/wallpaper[0-120].jpg

Alcuni server FTP richiedono l'autenticazione prima di poter scaricare i file. cURL ti consente di accedere con l'opzione -u (utente):

curl -u username:password -O ftp://ftp.protectedserver.com/files/example.txt

Puoi anche caricare file su un server FTP con l'opzione -T (trasferimento):

curl -u username:password -T /home/user/Documents/test.txt ftp://ftp.myserver.com

Qui puoi anche definire più file come un intervallo. Questa funzione è talvolta chiamata 'globbing'. Se i nomi dei file non seguono uno schema, elencali tra parentesi graffe (

-T '{file1.txt,image27.jpg}'

). Al contrario, se hanno nomi simili, applica la stessa logica dell'esempio di download di Tumblr e usa le parentesi quadre (

-T 'photo[1-50].jpg'

). Assicurati di fornire il percorso completo dei file se non si trovano nella directory corrente.

4. Controlla se un sito web è inattivo

Ci siamo passati tutti. Un sito web di cui hai assolutamente bisogno smette improvvisamente di funzionare. Quindi Facebook non si carica. Di fronte a un vero problema del primo mondo, cosa fai?

Puoi cercarlo su Google, chiedere a un amico di testarlo per te o utilizzare uno di quei siti a servizio singolo che ti dicono se un sito web è inattivo. Oppure potresti semplicemente avviare il terminale ed eseguire cURL:

curl -Is https://www.twitter.com -L | grep HTTP/

L'opzione I maiuscola (-I) controlla l'intestazione HTTP di una pagina Web e l'opzione -L (posizione) viene aggiunta per fare in modo che cURL segua i reindirizzamenti. Ciò significa che non devi digitare l'URL completo di Facebook; Scrivi e basta facebook.com e cURL si occuperà del resto grazie a -L. Se sono presenti reindirizzamenti, verranno visualizzati con il proprio stato HTTP.

Il messaggio che ci interessa è '200 OK', il che significa che tutto è a posto con il sito web. Se è davvero inattivo, vedrai qualcosa del genere:

I codici di stato HTTP sono solo informativi per quanto consentito dalla tua comprensione. Questo metodo non è completamente affidabile, perché un sito Web può restituire un codice di stato che indica una richiesta elaborata con successo, ma sarà vuoto quando lo apri nel browser. Tuttavia, nella maggior parte dei casi dovrebbe corrispondere alla situazione reale e farti sapere cosa c'è su o giù.

5. Espandi URL abbreviati

Gli URL abbreviati non sono intrinsecamente cattivi. Senza di loro, sarebbe difficile condividere i link su Twitter e altri social network con caratteri limitati. Alcuni servizi di abbreviazione degli URL offrono anche utili analisi. Ma c'è sempre il rischio che qualcuno stia cercando di nascondere contenuti dannosi dietro un URL abbreviato o che un troll nasconda un Rickroll (o qualcosa di molto, molto peggio). Se ti senti mai sospettoso di un URL abbreviato per qualsiasi motivo, cURL può aiutarti a espanderlo e scoprire dove porta esattamente a:

curl -sIL http://buff.ly/1lTcZSM | grep ^Location;

o

curl -sI http://buff.ly/1lTcZSM | sed -n 's/Location: *//p';

Puoi combinare cURL con

grep

o

sed

; la differenza principale è nella formattazione. Sed è uno di quegli strumenti che ogni utente Linux dovrebbe conoscere e integra cURL in questo e in alcuni altri casi d'uso. Non dimentichiamo che cURL può scaricare file da un URL abbreviato (a condizione che l'URL punti effettivamente a un file):

curl -L -o filename.txt http://short.url

La sintassi è la stessa degli altri download di cURL e l'opzione -L si occupa del reindirizzamento da un URL abbreviato a quello originale.

6. Mostra il tuo apprezzamento per ASCII Art

Certo, questo non è particolarmente utile, ma sembra interessante. Con l'aiuto di

pv

, un'utilità per monitorare l'avanzamento dei dati, cURL può visualizzare animazioni ASCII nel terminale.

curl -s http://artscene.textfiles.com/vt100/wineglas.vt | pv -L9600 -q

Le opzioni -s e -q mantengono entrambi i comandi in modalità silenziosa (silenzioso). L'opzione -L qui si riferisce al comando pv e consente di modificare la velocità di trasferimento dei dati in byte al secondo. In altre parole, se l'animazione si muove troppo velocemente o troppo lentamente, prova a giocare con quel numero. Oltre alle animazioni, cURL può visualizzare arte ASCII semplice e statica:

Il Web ha molti siti Web con tutti i tipi di arte ASCII: da pezzi incredibilmente dettagliati e di alta qualità a materiale strano, sciocco e persino NSFW. Questa tecnica di arte digitale risale agli anni '60 e oggi fa parte della cultura e della storia di Internet, mantenuta viva in numerose collezioni e strumenti che ti permettono di converti testo e immagini in ASCII art . Puoi usarlo per decorare il tuo terminale o per fare scherzi ai tuoi amici, qualunque cosa faccia galleggiare la tua barca.

7. Sperimenta con i social media

L'utilizzo dei social media dal terminale non è una novità: ti abbiamo già mostrato i client Twitter da riga di comando per Linux. Anche se probabilmente non passerai a cURL come strumento di socializzazione online, è bene sapere che puoi pubblicare su Facebook con esso, come descritto qui . Noterai che, tecnicamente, cURL non lo fa da solo; una combinazione di strumenti porta a termine il lavoro.

Quanto a Twitter, un tempo era possibile gestirlo direttamente da terminale con cURL. Poi Twitter ha cambiato la sua API e ora c'è uno speciale client cURL per Twitter chiamato Twurl. Non è la cosa più facile da usare, soprattutto per un principiante, e richiede l'autenticazione con Twitter Ad Platform. Questo ha senso se sei uno sviluppatore o un utente avanzato, ma non tanto se vuoi solo twittare dalla riga di comando. Tuttavia, ci sono modi per divertirsi con Twitter. Puoi utilizzare cURL per controllare il conteggio dei follower di un utente:

curl -s https://twitter.com/username | grep -o '[0-9,]* Followers';

8. Trova il tuo indirizzo IP esterno

Trovare il tuo indirizzo IP locale è abbastanza facile: basta eseguire

cambia l'icona del tipo di file windows 10
ifconfig

o consultare l'applet di gestione della rete. Per l'IP esterno, la maggior parte delle persone utilizza siti Web specializzati per ottenere queste informazioni. Tuttavia, alcune cose sono semplicemente più facili da fare dal terminale e questa potrebbe essere una di queste. Puoi anche creare un alias per il comando cURL. Esistono diversi servizi online che collaborano con cURL:

curl ipinfo.io
curl -s https://4.ifcfg.me
curl -s http://whatismyip.akamai.com
curl ifconfig.me
curl -s icanhazip.com

Alcuni possono dirti di più su qualsiasi indirizzo IP esterno:

curl ipinfo.io/207.46.13.41
curl ifconfig.me/207.46.13.41

Tutto quello che devi fare è scegliere un servizio. Se sei indeciso, includili tutti nel tuo alias, come soluzioni di backup.

9. Incolla testo e condividi immagini

Interrompere il flusso di lavoro non è mai un bene per la produttività e la concentrazione. Se svolgi la maggior parte del tuo lavoro nel terminale, passare a un browser solo per condividere alcuni file può essere poco pratico, se non fastidioso. Per fortuna, alcuni pastebin e servizi di condivisione file sono nati per funzionare con cURL, quindi puoi usarli direttamente dal terminale, senza un account utente.

clbin e Sprunge.us hanno una sintassi simile. Con Clbin, invii un file locale o l'output di un comando e restituisce un collegamento al testo caricato:

cat textfile.txt | curl -F 'clbin=<-' https://clbin.com

Supporta anche il caricamento di immagini (PNG, JPG e GIF):

curl -F 'clbin=@image.png' https://clbin.com

Se invece desideri utilizzare Sprunge.us, digita:

cat textfile.txt | curl -F 'sprunge=<-' http://sprunge.us

Sprunge.us non supporta il caricamento di immagini per ora.

Ix.io si basa sullo stesso principio dei due servizi precedenti, con alcune funzionalità extra. Per caricare un file, digita:

cat file.txt | curl -F 'f:1=<-' ix.io

o

curl -F 'f:1=@file.txt' ix.io

Quando ottieni un collegamento al testo caricato, puoi modificarne l'URL per mostrare l'evidenziazione della sintassi (con

ix.io/yourpaste+

,

ix.io/yourpaste/

, o

ix.io/yourpaste/language

per uno specifico linguaggio di scripting o di programmazione). È anche possibile limitare il numero di volte che un collegamento può essere visualizzato modificando il numero dopo il

'read:1'

valore:

cat file.txt | curl -F 'f:1=<-' -F 'read:1=2' ix.io

Ix.io è principalmente destinato a file di testo come codice sorgente o registri di sistema. Se vuoi caricare una varietà di formati di file, usa Transfer.sh . Supporta immagini, crittografia dei file e mantiene i file online per due settimane. Puoi caricare fino a 5 GB di dati su Transfer.sh. Ecco come:

curl --upload-file bunnies.jpg https://transfer.sh/bunnies.jpg

Sei libero di definire il nome del file caricato. Per caricare più file, elencali uno dopo l'altro con l'opzione -F:

curl -i -F filedata=@/tmp/hello.txt -F filedata=@/tmp/hello2.txt https://transfer.sh/

10. Controlla la posta non letta su Gmail

C'è un enorme potenziale da sbloccare in cURL se sei disposto ad approfondire i dettagli dei protocolli relativi alla posta elettronica (SMTP, POP, IMAP). Per un rapido controllo della posta elettronica, questo comando funzionerà. Analizza il tuo feed GMail e formatta l'output (oggetto e mittente dell'email) con

tr

,

awk

,

sed

e/o

grep

comandi. Nota che questa soluzione è estremamente pericolosa perché espone le tue credenziali di accesso a chiunque abbia accesso al tuo terminale. La prima versione mostra il nome del mittente, mentre la seconda stampa solo gli oggetti delle email non letti:


curl -u username:password --silent 'https://mail.google.com/mail/feed/atom' | tr -d '
' | awk -F '' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n 's/

curl -u username:password --silent 'https://mail.google.com/mail/feed/atom' | grep -oPm1 '(?<=)[^<]+' | sed '1d'

Cos'altro può fare cURL?

cURL è usato raramente come comando autonomo. La maggior parte delle persone lo usa come parte di uno script o di un'applicazione. Tuttavia, è possibile creare pratici one-liner con cURL, come abbiamo dimostrato qui. Molti di questi esempi sono stati adattati da CommandLineFu , una fantastica fonte di hack intelligenti da riga di comando e non dovresti considerarli come scolpiti nella pietra.

Con sufficiente conoscenza ed esperienza, possiamo modificare ogni comando, formattarlo in modo diverso o sostituirlo completamente con una soluzione migliore. Puoi migliorare i nostri comandi cURL suggeriti? Conosci altri usi interessanti per cURL? Condividi i tuoi suggerimenti nei commenti.

Crediti immagine: Introduzione all'interno della riga di comando di Osama Khalid via Flickr.

Condividere Condividere Tweet E-mail Elimina questi file e cartelle di Windows per liberare spazio su disco

Hai bisogno di liberare spazio su disco sul tuo computer Windows? Ecco i file e le cartelle di Windows che possono essere eliminati in sicurezza per liberare spazio su disco.

Leggi Avanti
Argomenti correlati
  • Linux
  • FTP
  • Scarica Gestione
  • terminale
Circa l'autore Ivana Isadora Devcic(24 articoli pubblicati)

Ivana Isadora è una scrittrice e traduttrice freelance, amante di Linux e fan di KDE. Supporta e promuove software gratuito e open source ed è sempre alla ricerca di app fresche e innovative. Scopri come metterti in contatto qui .

Altro da Ivana Isadora Devcic

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti