/ dev / tcp non trovato


21

Quando provo a eseguire il comando seguente:

echo -e "GET / HTTP/1.1\n\n" | /dev/tcp/74.125.225.19/80

Ricevo il seguente messaggio di errore:

bash: /dev/tcp/74.125.225.19/80: No such file or directory

Il seguente comando funziona perfettamente, quindi il problema riguarda il modo in cui sto usando /dev/tcp:

echo -e "GET / HTTP/1.1\n\n" | nc 74.125.225.19 80

Sono in Ubuntu 13.04, quindi la funzionalità dovrebbe essere sul mio sistema. Che cosa sto facendo di sbagliato? Quali sono le regole per l'utilizzo /dev/tcpcorretto?


Risposte:


34

Devi usarlo nei reindirizzamenti :

Bash gestisce diversi nomi di file specialmente quando vengono utilizzati nei reindirizzamenti, come descritto nella tabella seguente:

...

/ Dev / tcp / host / port

Se host è un nome host o indirizzo Internet valido e port è un numero di porta intero o un nome di servizio, Bash tenta di aprire il socket TCP corrispondente.

Così:

printf "GET / HTTP/1.1\n\n" > /dev/tcp/74.125.225.19/80

è il modo giusto di usarlo.

Quando è stato utilizzato /dev/tcp/74.125.225.19/80in una pipe, si è bashtentato di eseguire un comando denominato /dev/tcp/74.125.225.19/80e si è verificato un errore perché quel file non esisteva.


La possibilità di gestire /dev/tcp/host/porte /dev/udp/host/portnel reindirizzamento è stata aggiunta alla bashversione 2.04.

Devi compilare bashcon l' --enable-net-redirectionsopzione.


Vedo, quindi /dev/tcpviene trattato come un "file" e non come uno script.
IQAndreas
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.