shell 当重定向到/dev/udp时,如何将带有换行符的数据包强制为单个数据包?

xpszyzbs  于 2023-08-07  发布在  Shell
关注(0)|答案(3)|浏览(61)

最简单的例子如下:

echo -e "\n\n\n" > /dev/udp/192.168.45.45/9875

字符串
用tcpdump看一下,它实际上发送了4个数据包。如果我需要发送一个由十六进制(有效载荷)0a 0a 0a组成的数据包,可以使用/dev/udp设备吗?

5ssjco0h

5ssjco0h1#

我尝试了这个,它似乎只发送了一个四个字符的数据包(=包括尾随的换行符):

echo -e "\n\n\n" >/tmp/foo
cat /tmp/foo > /dev/udp/10.211.55.9/42000

字符串
问题似乎出现在echo而不是/dev/udp中。
希望这对你有帮助。汉奴

n9vozmp4

n9vozmp42#

您可以使用-n选项消除最后的\n

echo -n -e "\n\n\n" > /dev/udp/192.168.45.45/9875

字符串

kd3sttzy

kd3sttzy3#

感谢@Hannu的回答和@Damon的评论,我发现了一些其他的方法:

# stdbuf disables buffering with the -o0 option
stdbuf -o0 echo -e "\n\n\n" > /dev/udp/192.168.45.45/9875
# use a here doc with cat to avoid needing a temporary document
cat > /dev/udp/192.168.45.45/9875 <<EOF

EOF
#or echo through cat
echo -e "\n\n\n" | cat > /dev/udp/192.168.45.45/9875

字符串

相关问题