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

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

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

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правильного использования?

решение1

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

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опцией.

Связанный контент