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.