Nie znaleziono / dev / tcp

21

Kiedy próbuję uruchomić następujące polecenie:

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

Otrzymuję następujący komunikat o błędzie:

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

Następujące polecenie działa idealnie, więc problem dotyczy sposobu, w jaki korzystam /dev/tcp:

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

Jestem w Ubuntu 13.04, więc funkcja powinna być w moim systemie. Co ja robię źle? Jakie są zasady /dev/tcpprawidłowego korzystania ?

IQAndreas
źródło

Odpowiedzi:

34

Musisz go używać w przekierowaniach :

Bash obsługuje kilka nazw plików, zwłaszcza gdy są one używane w przekierowaniach, jak opisano w poniższej tabeli:

...

/ dev / tcp / host / port

Jeśli host jest prawidłową nazwą hosta lub adresem internetowym, a port jest liczbą całkowitą lub nazwą usługi, Bash próbuje otworzyć odpowiednie gniazdo TCP.

Więc:

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

jest właściwym sposobem korzystania z niego.

Podczas używania /dev/tcp/74.125.225.19/80w potoku bashpróbowano uruchomić polecenie o nazwie /dev/tcp/74.125.225.19/80i zgłosił błąd, ponieważ ten plik nie istniał.


Możliwość obsługi /dev/tcp/host/porti /dev/udp/host/portprzekierowania została dodana bashw wersji 2.04.

Musisz skompilować bashz --enable-net-redirectionsopcją.

Cuonglm
źródło
Rozumiem, więc /dev/tcpjest traktowany jako „plik”, a nie skrypt.
IQAndreas,