
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/tcp
correctamente?
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/80
una tubería, bash
intentó ejecutar un comando llamado /dev/tcp/74.125.225.19/80
e informó un error porque ese archivo no existía.
La capacidad de manejar /dev/tcp/host/port
y /dev/udp/host/port
redireccionar se agregó bash
en la versión 2.04.
Necesitas compilar bash
con --enable-net-redirections
la opción.