我正在尝试使用bash脚本动态移植和/或从静态端口移植。这是我的两个问题:
我仅发布端口范围解决方案,但是在启动其中一个端口(如果可用)时遇到问题。任何反馈都很棒!
#!/bin/bash
PORTS=( $(seq 8443 8444) )
for i in "${PORTS[@]}"; do
#I also tried, if nc -l -p "${PORTS[$i]}", but didn't launch anything
if nc -z "${PORTS[$i]}"; then
echo "IN USE"
else
echo "FREE"
if [[ !z "$CHROME" ]]; then
$CHROME "https://mysite:${PORTS[$i]/login" &
fi
fi
done
server.html的片段
<Connector
port="8443"
redirectPort="8080"
/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
此命令nc -l -p $PORT
将打开端口$PORT
,并将等待直到获得一些数据,因此,如果需要继续执行脚本,则将其像这样放在后台
nc -l -p $PORT &
检查命令nc -z
有点儿麻烦,据说
-z Specifies that nc should just scan for listening daemons, without sending any data to them.
It is an error to use this option in conjunction with the -l option.
但实际上是关闭端口,请在第一个终端中尝试此端口
nc -l -p 5555
在第二个终端
$ nc -z localhost 5555; echo $?
0
$ nc -z localhost 5555; echo $?
1
第二次运行显示该端口已关闭,因此我建议使用netstat -lnp
检查端口
netstat -lnp 2> /dev/null | grep -o $PORT && echo used || echo free