所以我有一个创建隧道的脚本。为此,它使用随机端口。 这是随机端口生成的逻辑
RPORT=1
while [ $RPORT -lt 2000 ]
do
RPORT=$[($RANDOM % 3000) + 1]
done
仅当它选择的端口未被使用时才有用。如果该端口处于活动状态,则在使用该端口时我无法访问该服务器。
我想做这样的事情
while [netsat -nat | grep $RPORT] = true
do
RPORT=$[($RANDOM % 3000) + 1]
所以我想首先检查该端口是否正在使用,如果是,请搜索另一个随机端口,检查是否正在使用,如果没有则使用它。
非常感谢您的时间和帮助!
答案 0 :(得分:0)
function random_unused_port {
(netstat --listening --all --tcp --numeric |
sed '1,2d; s/[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*:\([0-9]*\)[[:space:]]*.*/\1/g' |
sort -n | uniq; seq 1 1000; seq 1 65535
) | sort -n | uniq -u | shuf -n 1
}
RANDOM_PORT=$(random_unused_port)
这是帮助我的功能! 感谢Nahuel Fouilleul的链接!
答案 1 :(得分:0)
要解决问题,还要保留1到1000之间的端口,seq从1001开始
grep -F -x -v -f <(
netstat --listening --all --tcp --numeric |
sed '1,2d; s/[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*:\([0-9]*\)[[:space:]]*.*/\1/g' |
sort -nu
) <(seq 1001 65536) | shuf -n 1