Il gioco delle azioni positive                   [ Istituto Elettrotecnico Nazionale Galileo Ferraris: ]

"Ha un armadio. E' un mobile lungo diversi metri. Ed e' un orologio. E' il
famoso orologio atomico. Quello che sbaglia un secondo ogni non so quante
centinaia di migliaia di anni. Bello. Chissa' quanto costa. Peccato che,
ogni anno, verso capodanno, lo debbano correggere di 20-30 secondi per
rimetterlo in fase con il periodo di rivoluzione della Terra, che e' un
oggetto reale e quindi e' soggetto ad un errore ben superiore..."
-- Prof. Aldo A. Grattarola, Universita' di Genova
 

La device tcp di Bash


Due comandi molto utilizzati per scaricare dei file da Internet sono curl e wget.

Ad esempio, se vogliamo scaricare la home page di Google con curl, digiteremo


curl www.google.com


ed otterremo la pagina sullo standard output.

Stessa cosa si può fare con wget utilizzando il comando


wget -O - www.google.com


Anche il questo caso la pagina sarà mostrata sullo standard output (con wget togliendo -O -, l’output sarà salvato su index.html).

Non molti sanno che la stessa cosa si può fare utilizzando le estensioni tcp della bash. Il primo passo per ottenere tale scopo è digitare il seguente comando:


exec 5<>/dev/tcp/www.google.com/80


Con esso si istruisce la bash ad aprire sia in input che in output il descrittore di file numero 5 sull’indirizzo tcp www.google.com alla porta 80.

Il passo successivo è chiedere la pagina da scaricare, in questo caso la home page (/).


echo -e "GET / HTTP/1.0\n" >&5


Si noti che questa richiesta va fatta inviando l’apposito comando GET al descrittore prima aperto.

Sempre utilizzando il descrittore si riceve la pagina in risposta dal server con


cat <&5


Sullo standard output sarà visualizzata a questo punto la pagina richiesta. Non ci resta adesso che chiudere il descrittore con


exec 5<&-


Probabilmente si tratta più di un esercizio teorico che di una reale necessità ma è interessante sapere che la bash è un ambiente davvero completo ed autosufficiente.




© Mialan 2001 - 2026