/dev/tcp no encontrado

/dev/tcp no encontrado

Cuando intento ejecutar el siguiente comando:

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

Recibo 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 tiene que ver con 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 capacidaddeberíaestar en mi sistema. ¿Qué estoy haciendo mal? ¿Cuáles son las reglas para usarlo /dev/tcpcorrectamente?

Respuesta1

Tienes que usarlo enredirecciones:

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

...

/dev/tcp/host/puerto

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.

Entonces:

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

es la forma correcta de usarlo.

Cuando usó /dev/tcp/74.125.225.19/80una 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/portredireccionar se agregó bashen la versión 2.04.

Necesitas compilar bashcon --enable-net-redirectionsla opción.

información relacionada