web-dev-qa-db-ja.com

/ 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を使用しているため、機能shouldをシステムに追加する必要があります。何が悪いのですか? /dev/tcpを適切に使用するためのルールは何ですか?

20
IQAndreas

redirections で使用する必要があります:

Bashは、次の表に示すように、いくつかのファイル名をリダイレクトで使用するときに特別に処理します。

...

/ dev/tcp/Host/port

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を処理する機能は、バージョン2.04のbashに追加されました。

--enable-net-redirectionsオプションを使用してbashをコンパイルする必要があります。

35
cuonglm