/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が、そのファイルが存在しないためエラーが報告されました。


リダイレクトを処理する機能はバージョン 2.04 で追加され/dev/tcp/host/portました。/dev/udp/host/portbash

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

関連情報