/ dev / tcp no encontrado

21

Cuando intento ejecutar el siguiente comando:

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

Me sale el siguiente mensaje de error:

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

El siguiente comando funciona perfectamente, por lo que el problema implica cómo lo estoy usando /dev/tcp:

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

Estoy en Ubuntu 13.04, por lo que la capacidad debería estar en mi sistema. ¿Qué estoy haciendo mal? ¿Cuáles son las reglas para usar /dev/tcpcorrectamente?

IQAndreas
fuente

Respuestas:

34

Tienes que usarlo en redirecciones :

Bash maneja varios nombres de archivo especialmente cuando se usan en redirecciones, como se describe en la siguiente tabla:

...

/ dev / tcp / host / port

Si el host es un nombre de host o una dirección de Internet válidos, y el puerto es un número de puerto entero o un nombre de servicio, Bash intenta abrir el socket TCP correspondiente.

Asi que:

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

es la forma correcta de usarlo.

Cuando lo usó /dev/tcp/74.125.225.19/80en una tubería, bashintentó ejecutar un comando llamado /dev/tcp/74.125.225.19/80e informó un error porque ese archivo no existía.


La capacidad de manejar /dev/tcp/host/porty /dev/udp/host/portredirigir se agregó a la bashversión 2.04.

Necesita compilar bashcon la --enable-net-redirectionsopción.

Cuonglm
fuente
Ya veo, por lo que /dev/tcpse trata como un "archivo" y no un script.
IQAndreas