https://qiita.com/miminashi/items/f0dd914f3ec515e94927 というのを作ってみたけど、もっと単純にncatでできそうな気がしたので試してみた。
そもそも何がやりたいか
例えばシリアルポートが2つあったとして、これらの入力をマージしたい。
あるいは複数のプロセスの出力をマージして、ひとつのシリアルポートに出力したい。
ちょうど、tee file1 file2 ...
と逆のことをやりたい感じ。
ncとncatの違い
ncとncatって何が違うのか知らなかったんだけど、オリジナルのほうがnc、nmapに付属してるのがncatとのことです。
http://www.intellilink.co.jp/article/column/security-net01.html
今回使うのはncat
のほうで、nc
では複数のコネクションを扱うことができなかった。
ncatで複数のプロセスの出力をマージしてみる
-
-l
接続を待ち受ける -
-k
複数の接続を許可する -
-U
UNIXドメインソケットを使用する
1:Nの1の側
ncat -k -U -l /tmp/sock
1:NのNの側
変数n
の値を増やしながら、必要なだけ起動する(とりあえず2個)
n=1; while :; do printf '%s %s\n' "${n}" "$(date)"; sleep 1; done | ncat -U /tmp/sock
結果
$ ncat -k -U -l /tmp/sock
1 2019年 7月13日 土曜日 00時16分13秒 JST
1 2019年 7月13日 土曜日 00時16分14秒 JST
1 2019年 7月13日 土曜日 00時16分15秒 JST
1 2019年 7月13日 土曜日 00時16分16秒 JST
1 2019年 7月13日 土曜日 00時16分17秒 JST
2 2019年 7月13日 土曜日 00時16分17秒 JST
1 2019年 7月13日 土曜日 00時16分18秒 JST
2 2019年 7月13日 土曜日 00時16分18秒 JST
1 2019年 7月13日 土曜日 00時16分19秒 JST
2 2019年 7月13日 土曜日 00時16分20秒 JST
1 2019年 7月13日 土曜日 00時16分20秒 JST
2 2019年 7月13日 土曜日 00時16分21秒 JST
できたできた。
これでいいじゃん。