Howto

curl : anche le previsioni meteo con linux a linea di comando.

Il tool curl.

curl. Chi utilizza linux da poco tempo , percepisce l’utilizzo del “terminale” come un qualcosa di ostico e da smanettoni. Ma l’esecuzione di comandi da  “terminale” ci permette di capire, il più delle volte, come il nostro computer risponda ad una nostra richiesta. I comandi che noi digitiamo da shell non sono altro che stringhe di caratteri e il sistema operativo potrà rispondere con stringhe testuali o con l’esucuzione di applicazioni che supportano una interfaccia grafica.

Nel nostro caso, adremo a vedere come ricevere le previsioni meteo della nostra città, senza l’utilizzo di un browser e senza la fiaccolata tremeda di pubblicità e popup mediante un semblice comando dato da “terminale”.

Utilizzeremo il comando curl .

 

CURL

Command line tool and library. 

Curl è un tool molto potente e consente di fare tantissime cose, ma non spaventatevi , non è necessario saperle tutte !

Questo Tool viene utilizzato sia su riga di comando o attaverso  script per trasferire dati. Viene anche utilizzato in autobobili , televisori, router, stampanti, apparecchiature audio, telefoni cellulari, tablet, cassette per il settaggio, lettori multimediali ed è la spina dorsale di trasferimento Internet per migliaia di applicazioni software che vanno ad interessare ogni giorno miliardi di esseri umani.

Supporta DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and TFTP.

Supporta certificati SSL , HTTP POST, HTTP PUT, FTP uploading, HTTP upoad, proxies, HTTP/2, cookies, user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos), file transfer resume, proxy tunneling and tanto altro.

Questo è il sito di riferimento  se vuoi approfondire, altrimenti se per ora vuoi solo raggiungere lo scopo di saper in maniera immediata e pulita le tue belle previsioni del tempo continua la lettura.

E non dimentichiamo che :

Curl e libcurl sono veri Open Source / Software Libero e soddisfano tutte le definizioni in quanto tali. Significa che sei libero di modificare e ridistribuire tutti i contenuti degli archivi curl distribuiti. Puoi anche usare liberamente curl e libcurl nei tuoi progetti commerciali. Curl e libcurl sono concessi in licenza con una licenza derivata MIT / X.

 

Vediamo curl in  azione – previsioni del tempo linux

Io utilizzero la mia piccola e bella Raspberry Pi. ( ma potreste utilizzare Ubuntu o altre distro e/o derivate )

per controllare se questo potente tool è gia presente sulla nostra macchina andiamo in modalità terminale e digitiamo ( curl –version)

gianni@raspberrypi:~ $ curl –version

se la risposta e’ simile alla seguente  significa che e’ gia installato
curl 7.52.1 (arm-unknown-linux-gnueabihf) libcurl/7.52.1 OpenSSL/1.0.2l zlib/1.2.8 libidn2/0.16 libpsl/0.17.0 (+libidn2/0.16) libssh2/1.7.0 nghttp2/1.18.1 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL

altrimenti

sudo apt-get update

sudo apt-get install curl

e quindi riproviamo con

curl –version

bene,  ed ora una cosa difficilissima !

basta digitare curl wttr.in/nomecittà  e avremo

nel mio caso curl wttr.in/napoli

curl
curl previsioni del tempo

e avremo le notre belle previsioni del tempo.

Ma un attimo , se apriamo un browser e digitiamo nella barra degli indirizzi wttr.in/napoli cosa avremo ? La stessa schemata ! 🙂

previsioni del tempo linux
previsioni del tempo linux

 

Quindi “curl” in questo caso non fa altro che leggere in forma di carattere testo una pagina !

“Curl” permette di fare tantissime cose….. e spero che questo piccolo esempio sia da molla per conoscere le sue potenzialità.

Utility curl

Vediamo qualche parametro di curl.

-a–append 

(FTP/SFTP) Quando viene usato in un upload FTP, questo dirà a curl di aggiungere al file di destinazione invece di sovrascriverlo. Se il file non esiste, viene creato.

Si noti che questa opzione è ignorata da alcuni server SSH, incluso OpenSSH.

-A–user-agent <agent string> 

(HTTP) Specifica la stringa User-Agent da inviare al server HTTP. Alcuni CGI falliscono se la stringa dell’agente non è impostata su “Mozilla/4.0”. Per codificare gli spazi vuoti nella stringa, circondare la stringa con virgolette singole.

Questo valore può anche essere impostato con l’opzione -H/–header.

Se questa opzione è impostata più di una volta, l’ultima sarà quella usata.

–anyauth

(HTTP) Dice a curl di capire il metodo di autenticazione da solo, e di usare il metodo più sicuro che il sito remoto dichiara di supportare. Questo viene fatto facendo prima una richiesta e controllando le intestazioni di risposta, inducendo così un possibile giro di rete. Questo viene usato invece di impostare un metodo di autenticazione specifico, che si può fare con –basic, –digest, –ntlm, e –negotiate.

Nota che l’uso di –anyauth non è raccomandato se fai upload da stdin poiché potrebbe richiedere che i dati siano inviati due volte e poi il client deve essere in grado di rinviare. Se dovesse presentarsi la necessità durante l’upload da stdin, l’operazione di upload fallisce.

-b–cookie <name=data>

(HTTP) Passa i dati al server HTTP come cookie. Ci si aspetta che siano i dati precedentemente ricevuti dal server in una linea “Set-Cookie:”. I dati dovrebbero essere nel formato “NOME1=VALORE1; NOME2=VALORE2”.

Se nessun carattere ‘=’ (uguale) è usato nella linea, è trattato come un nome di file da usare per leggere le linee di cookie precedentemente memorizzate, che dovrebbero essere usate in questa sessione se corrispondono. Usando questo metodo si attiva anche il “cookie parser” che fa sì che curl registri anche i cookie in entrata, il che può essere comodo se lo si usa in combinazione con l’opzione –location. Il formato del file da cui leggere i cookie dovrebbe essere semplice intestazione HTTP o il formato di file cookie di Netscape/Mozilla.

NOTA: il file specificato con -b/–cookie è usato solo come input. Nessun cookie sarà memorizzato nel file. Per memorizzare i cookie, usa l’opzione -c/–cookie-jar, oppure puoi salvare le intestazioni HTTP in un file usando -D/–dump-header.

Se questa opzione è impostata più di una volta, l’ultima occorrenza sarà quella usata.

B–use-ascii

FTP/LDAP) Abilita il trasferimento ASCII. Per FTP, questo può anche essere imposto usando un URL che finisce con “;Type=A”. Questa opzione fa sì che i dati inviati a stdout siano in modalità testo per i sistemi win32.

Se questa opzione viene usata due volte, la seconda disabilita l’uso di ASCII.

–basic

(HTTP) Dice a curl di usare l’autenticazione di base HTTP. Questo è il default e questa opzione è solitamente inutile, a meno che non la si usi per sovrascrivere un’opzione precedentemente impostata che imposta un metodo di autenticazione diverso (come –ntlm, –digest e –negotiate).

–ciphers <list of ciphers>

(SSL) Specifica quali cifrari usare nella connessione. I cifrari elencati devono essere validi. Puoi leggere i dettagli della lista dei cifrari SSL su openssl.org.

I cifrari NSS sono fatti diversamente da OpenSSL e GnuTLS. La lista completa dei cifrari NSS è nella voce NSSCipherSuite a questo URL: https://pagure.io/mod_nss#Directives.

Se questa opzione è usata più volte, l’ultima prevale sulle altre.

–compressed

(HTTP) Richiede una risposta compressa usando uno degli algoritmi che Curl supporta, e restituisce il documento non compresso. Se questa opzione è usata e il server invia una codifica non supportata, Curl segnalerà un errore.

–connect-timeout <seconds>

Tempo massimo in secondi che la connessione al server può richiedere. Questo limita solo la fase di connessione; una volta che curl si è connesso questa opzione non si applica più. Dalla 7.32.0, questa opzione accetta valori decimali, ma il timeout effettivo diminuisce di precisione all’aumentare della precisione decimale del timeout specificato. Vedi anche l’opzione -m/–max-time.

Se questa opzione viene usata più volte, verrà usata l’ultima.

-c–cookie-jar <file name>

(HTTP) Specifica quale file vuoi che curl scriva tutti i cookie dopo un’operazione completata. Curl scrive tutti i cookie precedentemente letti da un file specificato e tutti i cookie ricevuti dai server remoti. Se nessun cookie è noto, non verrà scritto alcun file. Il file verrà scritto usando il formato di file dei cookie di Netscape. Se si imposta il nome del file con un singolo trattino (“-“), i cookie saranno scritti su stdout.

Questa opzione della linea di comando attiva il motore dei cookie che fa sì che curl registri e usi i cookie. Un altro modo per attivarlo è usare l’opzione -b/–cookie.

NOTA: Se il cookie jar non può essere creato o scritto, l’intera operazione di curl non fallirà e non segnalerà nemmeno un errore. Se viene specificato -v viene visualizzato un avvertimento, ma questo è l’unico feedback visibile che si ottiene su questa situazione possibilmente fatale.

Se questa opzione viene usata più volte, verrà usato l’ultimo nome di file specificato.

-C–continue-at <offset>

Continua/Riprende un trasferimento di file precedente all’offset dato. L’offset dato è il numero esatto di byte che verranno saltati, contati dall’inizio del file sorgente prima che venga trasferito alla destinazione. Se usato con gli upload, il comando ftp server SIZE non è usato da curl.

Usate “-C -” per dire a curl di trovare automaticamente dove/come riprendere il trasferimento. Quindi usa i file di output/input dati per capirlo.

Se questa opzione viene usata più volte, verrà usata l’ultima.

 

 

Key

previsioni del tempo linux – linux previsioni del tempo – previsioni del tempo a linea di comando