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 - 2018