如何只发送一个UDP数据包与netcat?
我想只发送一个UDP数据包中的短值,但是运行该命令
echo -n "hello" | nc -4u localhost 8000
我可以看到服务器得到你好的东西,但我不得不按Ctrl + C退出netcat命令。
发送问候后如何退出?
对不起,对于噪音,我重新阅读手册页,并find了-q
选项。
echo -n "hello" | nc -4u -q1 localhost 8000
作品(1秒后退出)。
出于某种原因,它不适用于-q0
。
如果你使用bash,那么你也可以写下来
echo -n "hello" >/dev/udp/localhost/8000
并避免netcat的所有特性和不兼容性。
这也可以发送给其他主机,例如:
echo -n "hello" >/dev/udp/remotehost/8000
这些不是文件系统上的“真实”设备,而是“特殊” 别名 。
我在netcat上找不到-q1
选项。 相反,我使用了-w1
选项。 下面是我做的发送udp数据包到任何主机和端口的bash脚本:
#!/bin/bash def_host=localhost def_port=43211 HOST=${2:-$def_host} PORT=${3:-$def_port} echo -n "$1" | nc -4u -w1 $HOST $PORT
Netcat每个换行发送一个数据包。 所以你很好。 如果你做更复杂的事情,那么你可能需要别的东西。
当我意识到这一点的时候,我正在与Wireshark鬼混。 不知道是否有帮助。
在当前的netcat(v0.7.1)上,您有一个-c开关:
-c, --close close connection on EOF from stdin
因此,
echo "hi" | nc -cu localhost 8000
应该做的伎俩。