
Когда я пытаюсь выполнить следующую команду:
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
опцией.