web-dev-qa-db-ja.com

ポートを継続的にリッスンし、データをファイルにダンプします

このコマンドを使用して、ポートをリッスンし、データをファイルにダンプします。

while :  ; do nc -l 0.0.0.0 10000 > log.txt & done

最初のリクエストは完璧に機能し、log.txtにダンプされますが、最初のリクエストの後、ncはリッスンしなくなり、停止しました。

誰かが私に間違ったことを教えてもらえますか?

これをバックグラウンドで継続的に実行し、このポートからの要求をlog.txtファイルに記録するだけです...

9
Cristian Boariu

ncにオプションを追加する必要があります。オプションは、実行しているncのバージョンによって異なります。たとえば、私の場合(Kubuntu)、オプションは-kです。マニュアルページから、

-k現在の接続が完了した後、ncに別の接続の待機を強制します。 -lオプションなしでこのオプションを使用すると、エラーになります。

私は-kが機能することを約束することはできません(もちろん、Ubuntuでない場合)、同様の何かを検索する必要があります。たとえば、私のDebianでは-kは存在しませんが、次のようになります。

-q秒後EOF on stdin、指定された秒数だけ待機してから終了します。秒数が負の場合、永久に待機します

編集:

1つのPCで動作することを確認するには:

  nc -k -l 0.0.0.0 10000 > out.txt

2番目のPCの場合:

  echo Hello | nc IP_address_of_first_pc 10000

上記のコマンドを数回発行してから、pc1でncコマンドを中断し、out.txtの行数を確認します。

15
MariusMatutiae