BashスクリプトからTCPソケットを渡すことはできません。

BashスクリプトからTCPソケットを渡すことはできません。

デバイスに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.txtdone
  • ダンプによってバイナリデータを受け取るように見えますが、xxd新しい行で区切られたテキストデータのように処理しています。バイナリデータでは正しく機能readしません。echo

単にファイル記述子の内容をファイルに渡しxxd、結果をファイルに保存したらどうでしょうか。つまり、ちょうどこれです:

xxd -ps <&4 | sed 's/../&\ /g' > somefile.txt &

おすすめ記事