use*_*681 10
试试这个:
for port in $(seq 4444 65000); do echo -ne "\035" | telnet 127.0.0.1 $port > /dev/null 2>&1; [ $? -eq 1 ] && echo "unused $port" && break; done
Run Code Online (Sandbox Code Playgroud)
哪里
seq 4444 65000 - port range for check
echo -ne "\035" - escape character to force close telnet session (^])
Run Code Online (Sandbox Code Playgroud)
如果telnet完成,退出代码1表示连接被拒绝:
$ telnet 127.0.0.1 4444
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
否则我们决定连接成功,退出代码为0.
编辑:
特殊的cygwin:你需要安装inetutils
包含telnet端口的附加包,并使用如下脚本:
for port in $(seq 4444 65000); do echo -ne "\035" | /usr/bin/telnet 127.0.0.1 $port > /dev/null 2>&1; [ $? -eq 1 ] && echo "unused $port" && break; done
Run Code Online (Sandbox Code Playgroud)