次のコマンドを実行しようとすると:
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/ホスト/ポート
ホストが有効なホスト名またはインターネットアドレスで、ポートが整数のポート番号またはサービス名の場合、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
バージョン2.04には処理とリダイレクト機能が追加されました。/dev/udp/host/port
bash
bash
オプションを使用してコンパイルする必要があります--enable-net-redirections
。