私の 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に置き換えます。