【发布时间】:2012-03-25 10:22:51
【问题描述】:
如何通过 bash 脚本快速确定端口 445 是否在服务器上打开/侦听。
我已经尝试了几个选项,但我想要一些快速的方法:
1.lsof -i :445(需要几秒钟)
2.netstat -an |grep 445 |grep LISTEN(需要几秒钟)
3.telnet(不返回)
4、nmap、netcat在服务器上不可用
很高兴知道一种不先枚举然后再使用 greps 的方式。
【问题讨论】:
-
netcat 可用吗?它有一个快速失败路径 IIRC。 netcat.sourceforge.net
-
netstat -lnt(带有-t和不带-a)将限制输出仅监听 TCP 连接。它可能会加快一点。只有在不需要 IPv6 时,才能为 IPv4 添加-4。 -
lsof -i 是个人的最爱。
-
netstat -an | grep PORTNUMBER | grep -i listen如果输出为空,则端口未使用。 -
我不知道为什么
lsof对您来说很慢,但通常它是您列出的解决方案中最好的。您的netstat解决方案不是很可靠(您可以在使用grep时猜到它;无论如何,如果有人在听例如4450,它会返回true)。telnet和netcat实际上试图创建一个连接,这可能并不总是你想要的。