netcatを使用してポートをリッスンし、クライアントが接続したときにコマンドからの出力を送信します。

netcatを使用してポートをリッスンし、クライアントが接続したときにコマンドからの出力を送信します。

私の LAN には Raspberry Pi (Debian Linux) が接続されており、接続されたデバイスからデータを読み取って STDOUT に出力することができます。

/usr/bin/dataプログラムが「サーバー」上で実行され、スクリプトの出力をポート 1234 に提供したいとします。

私は、任意のクライアントがそのポートに接続してスクリプトの出力を取得できるようにしたい。

nc Server 1234 > ServerData.txt

サーバーを稼働させ、各接続に対してスクリプトを実行し、データを提供してからクライアントへの接続を閉じるようにしたいです。サーバーは稼働させ、次の接続を待つ必要があります。

サーバー上で実行する netcat コマンドは何ですか?

答え1

より高度なバージョンの netcat のいずれかが必要になります。ncatまたは を使用できますsocat:

サーバ側

クライアントが接続すると、実行可能プログラムを実行し/usr/bin/data、プログラム出力をクライアントに送信します。

NCAT法:

$ ncat -l 1234 -c '/usr/bin/data' --keep-open

SOCAT法

$ socat -U TCP-LISTEN:5403,fork EXEC:'/usr/bin/data',stderr,pty,echo=0

クライアント側:

サーバーに接続し、サーバーからの出力を受信します。

NCATファイル方式

$ ncat Server 1234 | tee ServerData.txt

NC (netcat) メソッドを標準出力に出力

$ </dev/null nc <Server.ip> 5403 > /dev/stdout

ファイルに保存するには、/dev/stdoutをファイル名に置き換えます。

ファイルへのWGETメソッド

$ wget -q <Server.ip>:5403 -O myfile.txt

結果を印刷するには、myfile.txtを/dev/stdoutに置き換えます。

関連情報