netcatと永続的なクライアント接続を確立する方法は?

netcatと永続的なクライアント接続を確立する方法は?

定義された間隔でサーバーにデータを送信するためにフォルダーを継続的に繰り返すbashスクリプトを作成しています。私はサーバーに接続し、データを送信するツールとしてnetcatを使用します。私の擬似コードは次のとおりです。

while true
do
    read_folder()
    process_data() > result.txt
    cat result.txt > netcat ip port
    wait 10 sec
done

私の唯一の問題は、この場合、クライアントが毎回TCP / IP接続からサーバーに接続し、切断することです。スクリプトの先頭で接続を確立し、最後で閉じることを好みます。

Bashスクリプトのコマンドラインツールを使用してこれを行う方法はありますか?

答え1

ループの外側にリダイレクトを入れるだけです。

while true; do
    read_folder
    process_data
    sleep 10
done | netcat $ip $port

ループ内からループの標準出力に出力が必要な場合は、別のファイル記述子を介して切り替えます。

{
  while true; do
      read_folder
      echo tick >&3
      process_data
      sleep 10
  done | netcat $ip $port
} 3>&1

答え2

2つの別々のプロセス:1つはresult.txtをnetcatにコピーします。 Result.txt は他のプロセスを通じて提供されます。

echo -n >result.txt
tail -f result.txt | nc ip port &
while true
do
    read_folder()
    process_data() > result.txt
    wait 10 sec
done

関連情報