このスタックオーバーフローの質問へのスピンオフとして、いくつかの調整を除いて同じものをアーカイブしたいと思います。
ホストに接続し、バイナリ ファイルを 1 行ずつ送信し、各行の間に数秒の遅延を設定したいのですが、同じ接続である必要があります。送信したい文字列はほとんどがテキストベースですが、行に印刷できない文字がいくつかあります。
これは、送信したい文字列/行の例です (ファイルごとに数千行):
<null>e<null><null>00326513,6598,no,8,,2z<null>
<null>
値は HEX 値です0x00
。
最初のエントリから質問を書き直しましたが、@mzetは私の質問がテキストのみだったので元の質問に答えましたが、後で文字列0x00
に最初は見えなかったこれらの文字が含まれていることを発見しました。ほとんど機能すると思うので、彼の答えをベースとして使用したいと思いますが、微調整が必要な場合があるため、これは私のものではなく彼の貢献です。
3 行のファイルがある場合:
<null>e<null><null>00370513,6598,no,8,,2z<null>
<null>f<null><null>00891548,6598,yes,8,,3z<null>
<null>f<null><null>00129525,6598,yes,8,,2z<null>
次に、@mzetの回答を微調整<null>
し、ファイル内の値を次のコマンドに置き換えて\x00
設定できると考えました。-e
echo
[root@srv]# mkfifo /tmp/fifoIn; cat /tmp/fifoIn | nc localhost 2222 &
[root@srv]# cat myfile | while read line; do echo -ne $line; sleep 2; done > /tmp/fifoIn
これを行うと、サーバー側で次のように表示x00
されます。
[root@srv]# nc -l 2222
x00ex00x0000370513,6598,no,8,,2zx00
x00fx0000891548,6598,yes,8,,3zx00
x00fx00x0000129525,6598,yes,8,,2zx00
バイナリ (テキスト?) ファイルを任意に送信することはできますか? また、ファイルを 1 行ずつ送信できない場合、1 つの文字列を数千回送信することは可能ですか? 同じ文字列を繰り返すことで管理できるため、一意である必要はなく、ファイル内にある必要もありません。
編集#1
スクリプトがサーバーに 1 行しか送信しないのはなぜですか (4 行が予想されます)、その後、一時停止 (?) するだけです。クライアント (またはサーバー) は接続を閉じますが、エラーは発生しません。
rm -f /tmp/fifofile
mkfifo /tmp/fifofile
cat /tmp/fifofile | nc 192.168.20.6 5000 &
sleep 1
i="0"
while [ $i -lt 4 ]
do
echo "$i"
echo -ne "\x00e\x00\x00001212dsfdsfdsfsdfsdfsdfdsf\x00" | tee /tmp/fifofile
sleep 1
i=$[$i+1]
done