作为一个分拆到this Stack Overflow question我想实现相同,除了一些调整。发送一个二进制文件(逐行)到Netcat的套接字服务器
我想连接到一个主机,一行一行地发送一个二进制文件,并且每行之间有几秒钟的延迟......并且它必须在同一个连接中。我想发送的字符串大部分都是基于文本的,但是这行中有几个不可打印的字符。
这是一个字符串/线我要发送(每秒数千文件中的行)的一个例子:
<null>e<null><null>00326513,6598,no,8,,2z<null>
的<null>
值是十六进制值0x00
。
我已经rewitten我的问题从它的第一个条目,但@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答案,并用\x00
取代我的文件中的<null>
值,并在echo
命令设置-e
:
[[email protected]]# mkfifo /tmp/fifoIn; cat /tmp/fifoIn | nc localhost 2222 &
[[email protected]]# cat myfile | while read line; do echo -ne $line; sleep 2; done > /tmp/fifoIn
当我这样做,我可以看到在服务器端的x00
:
[[email protected]]# nc -l 2222
x00ex00x0000370513,6598,no,8,,2zx00
x00fx0000891548,6598,yes,8,,3zx00
x00fx00x0000129525,6598,yes,8,,2zx00
是否可以根据需要发送二进制(文本?)文件?如果无法逐行发送文件,是否可以发送一个字符串几千次?严格必要的,他们不需要是唯一的或在文件中,因为我可以用相同的字符串重复自己来管理。
编辑#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
这似乎工作,我会接受你的答案,除非有更好的几天内出现。你是否也知道是否有可能避免它在每行之后发送新行? – DHS
在while循环中尝试'echo -n'而不是'echo' – mzet
请参阅我的编辑 – DHS