我的Socat命令如下:
socat -u TCP4-LISTEN:5000,reuseaddr,fork OPEN:/tmp/test1-2039-sip-i,creat,append
Run Code Online (Sandbox Code Playgroud)
我想修改为监听许多端口范围,从端口10000 till 29999
满足该需求的正确命令是什么?
小智 1
是的,socat 每个实例一次只能侦听一个端口,因此我解决这个问题的业余方法是在 bash 脚本中使用数组为我需要监视的每个端口打开一个 socat 实例。对数千个端口执行此操作并不实际,因为虽然 socat 在侦听时使用很少的资源,但运行 20,000 个 socat 实例是不切实际的,但我已经在小型 SoC 板上一次运行了 50 个实例。因此,在数组中命名您定义的端口(实际使用的端口),然后迭代 bash 数组循环并生成一些实例。
#!/bin/bash
ports=( 23 24 25 443 80 )
for port in "${ports[@]}"; do
socat tcp-listen:$port,reuseaddr,fork open:/tmp/$port.txt,creat,append
done
exit
Run Code Online (Sandbox Code Playgroud)
这会将来自端口的数据写入 /tmp 中的“端口号文件”.txt,即。24.txt. 如果出现错误,那是因为其他东西已经绑定到该端口。使用 inotifywatch 在文件被写入时提醒您。
这个问题已经出现了一段时间,并且在我的搜索中不断出现。所以我决定回答一下。