/ 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 / хост / порт

Якщо хост - це дійсне ім'я хоста або адреса Інтернету, а порт - це цілий номер порту або ім'я послуги, 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.