/ dev / tcp не найден


21

Когда я пытаюсь запустить следующую команду:

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

Я получаю следующее сообщение об ошибке:

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

Следующая команда работает отлично, поэтому проблема заключается в том, как я использую /dev/tcp:

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

Я нахожусь в Ubuntu 13.04, поэтому возможность должна быть в моей системе. Что я делаю не так? Каковы правила использования /dev/tcpдолжным образом?


Ответы:


34

Вы должны использовать его в перенаправлениях :

Bash обрабатывает несколько имен файлов, особенно когда они используются в перенаправлениях, как описано в следующей таблице:

...

/ DEV / TCP / хост / порт

Если host является действительным именем хоста или интернет-адресом, а port является целочисленным номером порта или именем службы, Bash пытается открыть соответствующий сокет TCP.

Так:

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

это правильный способ использовать его.

Когда вы использовали /dev/tcp/74.125.225.19/80канал, bashпопытался выполнить команду с именем /dev/tcp/74.125.225.19/80и сообщил об ошибке, потому что этот файл не существует.


Возможность обработки /dev/tcp/host/portи /dev/udp/host/portперенаправления была добавлена bashв версии 2.04.

Вам нужно скомпилировать bashс --enable-net-redirectionsопцией.


Понятно, поэтому /dev/tcpтрактуется как "файл", а не как скрипт.
IQAndreas
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.