如何找到空闲的 TCP 端口
How to find a free TCP port
如何在服务器上找到完全空闲的 TCP 端口?我试过命令行;
netstat -an
但我被告知状态为 LISTENING 的已在使用中。
我还尝试了一个名为 TCPView 的工具,但它同样只显示了正在使用的 TCP 端口。我知道如何 telnet 到一个端口来检查它是否打开,但我需要找到一个免费的。
netstat -lntu
这将解决您的目的。
在Bash中你可以编写简单的for
循环来检查哪些TCP端口是空闲的,例如
$ for i in {1..1024}; do (exec 2>&-; echo > /dev/tcp/localhost/$i && echo $i is open); done
22 is open
25 is open
111 is open
587 is open
631 is open
841 is open
847 is open
1017 is open
1021 is open
有关更多信息,请查看:Advanced Bash-Scripting Guide: Chapter 29. /dev
and /proc
灵感来自 https://gist.github.com/lusentis/8453523
从种子端口开始,递增直到可用
BASE_PORT=16998
INCREMENT=1
port=$BASE_PORT
isfree=$(netstat -taln | grep $port)
while [[ -n "$isfree" ]]; do
port=$[port+INCREMENT]
isfree=$(netstat -taln | grep $port)
done
echo "Usable Port: $port"
如何在服务器上找到完全空闲的 TCP 端口?我试过命令行;
netstat -an
但我被告知状态为 LISTENING 的已在使用中。
我还尝试了一个名为 TCPView 的工具,但它同样只显示了正在使用的 TCP 端口。我知道如何 telnet 到一个端口来检查它是否打开,但我需要找到一个免费的。
netstat -lntu
这将解决您的目的。
在Bash中你可以编写简单的for
循环来检查哪些TCP端口是空闲的,例如
$ for i in {1..1024}; do (exec 2>&-; echo > /dev/tcp/localhost/$i && echo $i is open); done
22 is open
25 is open
111 is open
587 is open
631 is open
841 is open
847 is open
1017 is open
1021 is open
有关更多信息,请查看:Advanced Bash-Scripting Guide: Chapter 29. /dev
and /proc
灵感来自 https://gist.github.com/lusentis/8453523
从种子端口开始,递增直到可用
BASE_PORT=16998
INCREMENT=1
port=$BASE_PORT
isfree=$(netstat -taln | grep $port)
while [[ -n "$isfree" ]]; do
port=$[port+INCREMENT]
isfree=$(netstat -taln | grep $port)
done
echo "Usable Port: $port"