Linuxのコマンドにnetcat(nc)というとても便利なTCP,UDP通信コマンドがありますが、ネットワーク作業環境で標準出力などリダイレクトで簡単に他のPCに送信できるしくみをメモしておきたいと思います。
(パソコン教室などでとなりのPCのテキストを送りたい場合など便利です)
環境:RaspberyPi 2台
受信側(192.168.11.1) :
while [ 1 ] ; do nc -l 8080 ; done > temp01
ループとリダイレクトの意図は、立ち上げっぱなしにするためです。
temp01という受信した情報を加工したい場合はコピーし、リアルタイムで観たい場合は、
tail -f temp01
とします。削除する場合は、
echo -n > temp01
などとして、ファイルの中身を空にします。
またリアルタイムに内容を検索したいときなど、
tail -f temp01 | tee | grep hello
とします。
送信側:
exec 3<>/dev/tcp/192.168.11.1:8080
とファイルディスクリプタの変更を一回だけ定義しておき、
echo hello >&3
で送信します。
任意のタイミングで、テキストを送ったり、内容を確認したりすることをねらっています。
このコマンドは、長くなりますが、
echo hello > /dev/tcp/192.168.11.1:8080
で送ってもいいです。
bashはネットワーク接続もパイプで扱えのでとても便利です。
他にもプロセス置換というコマンドそのものをファイルとして扱える機能があり、これもかなり便利です。
diff <(ps -ef) <(sleep 10; ps -ef)
10秒後のプロセスと比較できます。
本来入力ファイルを記述する引数の部分にコマンドを書くことによってその出力を入力ファイルとして扱います。
また逆に、本来出力ファイルを記述する部分にコマンドを書くことによってファイルに出力される内容をその入力として扱います。(>(command) )
(ここが詳しい:https://techblog.raccoon.ne.jp/archives/53726690.html)
このような機能を知っていると作業を効率化することができるので、覚えておきたいものです。
実用的な内容でした〜