我已经更改了路由器上的固件,unanme -a
结果:
Linux RT-AC86U-8458 4.1.27 #2 SMP PREEMPT Fri Aug 6 18:32:35 EDT 2021 aarch64 ASUSWRT-Merlin
我已经通过 ssh 登录到该路由器,并且正在尝试弄清楚如何将 UDP 数据包从该主机发送到网络上的另一台主机。
这是我尝试过的(全部失败):
echo -n "hello world" | /dev/udp/serverip/15243
# /dev/udp/ doesnt exist
# or
echo -n "hello world" | nc -4u -w0 serverip 15243
# fails with 4 being an invalid option
# or
echo -n "hello world" | nc -u -c serverip 15243
# fails with u being an invalid option
我如何从该主机发送 UDP 数据包?
答案1
简短的浏览会话ASUSWRT-Merlin git 存储库告诉我 ASUSWRT-Merlin 使用Busybox版本1.25.1到 实施nc
.
BusyBox当前的上游版本是1.34.1截至撰写本文时。
更具体地说,ASUSWRT-Merlin 似乎使用旧版本的 BusyBox配置时不带该ENABLE_NC_110_COMPAT
选项nc
,这将在其命令中添加 UDP 支持和其他一些内容:
CONFIG_NC=y
# CONFIG_NC_SERVER is not set
CONFIG_NC_EXTRA=y
# CONFIG_NC_110_COMPAT is not set
通过将上面代码片段中的最后一行更改为CONFIG_NC_110_COMPAT=y
并重建 BusyBox 组件或整个 ASUSWRT-Merlin 固件,您将获得您想要的功能。
但正如 Steffen Ullrich 评论的那样,ASUSWRT-Merlin 还包括索卡特。尝试:
echo -n "hello world" | socat - UDP:serverip:15243
socat
有多种使用UDP的模式。例如,如果使用 justUDP:
不适合您,您可以尝试使用UDP-DATAGRAM:
or代替。UDP-SENDTO: