从一个bash脚本如何快速查找端口445是否在服务器上打开/监听。
我已经试过几个办法了,但我想快点: 1. lsof -i:445(需要数秒) 2. netstat -an |grep 445 |grep LISTEN(需要数秒) 3.Telnet(不返回) 4. 服务器上没有Nmap、netcat
知道一种不先枚举然后再grep的方法将会很好。
从一个bash脚本如何快速查找端口445是否在服务器上打开/监听。
我已经试过几个办法了,但我想快点: 1. lsof -i:445(需要数秒) 2. netstat -an |grep 445 |grep LISTEN(需要数秒) 3.Telnet(不返回) 4. 服务器上没有Nmap、netcat
知道一种不先枚举然后再grep的方法将会很好。
当前回答
我想检查一个linux测试服务器上的端口是否打开。 我可以通过尝试通过telnet从我的开发机器连接到测试服务器来做到这一点。在您的开发机器上尝试运行:
$ telnet test2.host.com 8080
Trying 05.066.137.184...
Connected to test2.host.com
在本例中,我想检查主机test2.host.com上的端口8080是否打开
其他回答
ss -tl4 '( sport = :22 )'
2毫秒够快吗?
添加冒号可以在Linux上工作
您也可以使用netcat命令
[location of netcat]/netcat -zv [ip] [port]
or
nc -zv [ip] [port]
-z -设置nc简单地扫描监听守护进程,而不实际发送任何数据给它们。 -v -启用详细模式。
你可以这样使用netstat来获得更快的结果:
在Linux上:
netstat -lnt | awk '$6 == "LISTEN" && $4 ~ /\.445$/'
在Mac:
netstat -anp tcp | awk '$6 == "LISTEN" && $4 ~ /\.445$/'
这将输出在端口上侦听的进程列表(本例中为445),如果端口空闲,则不输出任何内容。
基于Spencer Rathbun的回答,使用bash:
true &>/dev/null </dev/tcp/127.0.0.1/$PORT && echo open || echo closed
下面是一个适用于Mac和Linux的方法:
netstat -aln | awk '$6 == "LISTEN" && $4 ~ "[\\.\:]445$"'