/ 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 / 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リダイレクションでは、に加えてbash、バージョン2.04に。

あなたはコンパイルする必要があるbash--enable-net-redirectionsオプション。


なるほど、そう/dev/tcp「ファイル」ではなくスクリプトとして扱われます。
IQAndreas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.