![shell 脚本测试 telnet 连接](https://linux22.com/image/1205194/shell%20%E8%84%9A%E6%9C%AC%E6%B5%8B%E8%AF%95%20telnet%20%E8%BF%9E%E6%8E%A5.png)
我正在尝试编写一个脚本来检查我自己的特定端口是否打开并可以连接。
我尝试通过 netcat 来做
nc -vz localhost 25565
但这只能告诉我端口是否打开。
我需要检查端口是否可以连接,我尝试通过 telnet 进行连接:
sleep 2 | telnet localhost 25565
这连接到端口然后 2 秒后就出来了。
问题是,是否有办法保存连接是否成功,然后进行 if 或 while
答案1
这里发生了几件事。
首先,应用程序可能正在监听本地主机但你的外部适配器上没有,所以你可以连接到本地主机但其他人则无法做到这一点。因此,在测试中,您应该使用网络可见的计算机 IP 地址,而不是本地主机. 这应该列在 的输出中ip addr show
。
为了查看是否可以连接到端口,以及有关在其上运行的服务的信息,我建议使用 nmap(替换192.168...
为您的 IP):
nmap -A 192.168.0.101 -p 25565
或者,只需确认应用程序正在监听该端口:
netstat -tulpn |grep '\b25565\b'
这两者都可以包含在while true; do ...; sleep 60; done
脚本中。