
デバイスに4つのTCPソケットが接続されています。
これらは以下を使用して作成されました。
exec 3<>/dev/tcp/IP/PORT
exec 4<>/dev/tcp/IP/PORT
exec 5<>/dev/tcp/IP/PORT
exec 6<>/dev/tcp/IP/PORT
サブシェルからファイル記述子から読み取られました。
cat <&4 | while read LINE; do
echo -n "FD4 $LINE" | xxd -ps | sed 's/../&\ /g' > somefile.txt
done &
後で使用するためにファイルに渡してください。
しかし、特定の種類のメッセージに問題があります。
簡単な使用
cat <&6 | xxd -ps
以下(一部のパラメータ)が表示されます。
006ec94430020000c090006800c903470000000000040000209f00000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
しかし、それを使用するためにファイルや変数に渡すことはできません。
さまざまな方法を試しましたが、解決策が見つかりませんでした。
誰かがこのようなニュースを処理する方法を知っていることを願っています。
答え1
コードにはいくつかの問題があります。
- 読み取る各行から
somefile.txt
前の行に入れた内容を消去して再作成します。代わりに使用するか、キーワードの後ろに>> somefile.txt
移動する必要があります。> somefile.txt
done
- ダンプによってバイナリデータを受け取るように見えますが、
xxd
新しい行で区切られたテキストデータのように処理しています。バイナリデータでは正しく機能read
しません。echo
単にファイル記述子の内容をファイルに渡しxxd
、結果をファイルに保存したらどうでしょうか。つまり、ちょうどこれです:
xxd -ps <&4 | sed 's/../&\ /g' > somefile.txt &