如何从bash脚本中快速找出服务器上端口445
是否开放/监听。
我尝试了几种方法,但都想要一些更快的方法:
1. lsof -i :445
(几秒钟内返回)
2. netstat -an |grep 445 |grep LISTEN
(几秒钟内返回)
3. telnet
(没有返回结果)
4. nmap
和netcat
在服务器上不可用
最好知道一种不需要枚举和筛选的方法。
[location of netcat]/netcat -zv [ip] [port]
nc -zv [ip] [port]
-z – 将nc设置为仅扫描监听守护程序,而不实际向它们发送任何数据。
-v – 启用详细模式。
tcping 是一个非常轻量级的工具,对系统负担很小。它还有一个超时参数,使得它更快:
[root@centos_f831dfb3 ~]# tcping 10.86.151.175 22 -t 1
10.86.151.175 port 22 open.
[root@centos_f831dfb3 ~]# tcping 10.86.150.194 22 -t 1
10.86.150.194 port 22 user timeout.
[root@centos_f831dfb3 ~]# tcping 1.1.1.1 22 -t 1
1.1.1.1 port 22 closed.
nmap
是正确的工具。
只需使用 nmap example.com -p 80
您可以从本地或远程服务器使用它。 它还可以帮助您确定防火墙是否阻止了访问。
iptables -nL
或者
iptables -nL | grep 445
netstat -lnt
命令(带有-t
选项且不带-a
)将只显示正在监听的 TCP 连接。这可能会加快一些速度。如果您不需要 IPv6,可以添加-4
来仅显示 IPv4。 - Bartosz Moczulskinetstat -an | grep PORTNUMBER | grep -i listen
。 - automatixlsof
对你来说很慢,但通常它是你列出的解决方案中最好的。你的netstat
解决方案并不是非常可靠(每当你使用grep
时都可以猜测;无论如何,如果有人在4450上监听,它都会返回true)。telnet
和netcat
实际上尝试创建一个连接,这可能并不总是你想要的。 - petersohn