【Linux】LISTENして受け取った信号を記録するだけのワンライナサーバ

  • 2020年3月16日
  • 2020年3月17日
  • Linux

 時折何らかのクライアント端末のテストのために、モックサーバとでもいうべき受信して定型を返すだけのサーバを用意することがあります。web系ではHTTP通信が主になるためおおよそ静的ページを返すのみ、決まったJSONを返すのみといった本番同然のサーバ + 完成済みの1ファイルとなります。これがweb系から離れるともう通信さえできれば後はなんでもいい、といった要求も現れます。そういった際に一々サーバを用意するのは手間です。この記事ではそういった要求にこたえるワンライナを紹介します。
 記事の主役のコマンドは次です。

while : ; do (nc -l -p リッスンするポート番号 >> 受け取った信号.txt) ; done

例.
while : ; do (nc -l -p 12345 >> in_port_12345.txt) ; done

 使うのはnetcatというネットワークの万能屋ともいわれるCLIソフトです。
Netcat – Wikipedia
 これの l オプションはLISTENするサーバになるというオプションで、p オプションはポート番号の指定です。nc -l では受け取った信号が標準出力されるのでそれをリダイレクトしてテキストファイルに追記します。whileでくくるのはコネクションが切れる度にnetcatも終了するためです。whileでくくれば複数回の通信にも耐えます。
 Linuxは何かと暗号染みた略語まみれのコマンドとオプションだらけですが、慣れたり意味が分かったりしてくると簡易に処理が作れるようになり便利です。
 
追記:
時刻別にファイルを分けるなら次の様にします。

while : ; do (nc -l -p 12345 >> in_port_12345_`date "+%Y%m%d_%H%M%S"`.txt) ; done
>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG