从一个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的方法将会很好。
当前回答
ss -tl4 '( sport = :22 )'
2毫秒够快吗?
添加冒号可以在Linux上工作
其他回答
这里有一个非常简短的“快速回答”:如何测试远程TCP端口是否从Shell脚本打开?
nc -z <host> <port>; echo $?
我使用127.0.0.1作为“远程”地址。
如果端口是开放的,返回“0”,如果端口是关闭的,返回“1”
e.g.
nc -z 127.0.0.1 80; echo $?
-z指定nc只扫描监听守护进程, 没有发送任何数据给他们。使用此选项是错误的 conjunc - 带有-l选项的Tion。
您也可以使用netcat命令
[location of netcat]/netcat -zv [ip] [port]
or
nc -zv [ip] [port]
-z -设置nc简单地扫描监听守护进程,而不实际发送任何数据给它们。 -v -启用详细模式。
nc -l 8000
其中8000是端口号。如果端口是空闲的,它将启动一个可以轻松关闭的服务器。如果不是,它将抛出一个错误:
nc: Address already in use
它们列在/proc/net/tcp中。
它是十六进制中“:”后面的第二列:
> cat /proc/net/tcp
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 10863 1 ffff88020c785400 99 0 0 10 -1
1: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 7983 1 ffff88020eb7b3c0 99 0 0 10 -1
2: 0500010A:948F 0900010A:2328 01 00000000:00000000 02:00000576 00000000 1000 0 10562454 2 ffff88010040f7c0 22 3 30 5 3
3: 0500010A:E077 5F2F7D4A:0050 01 00000000:00000000 02:00000176 00000000 1000 0 10701021 2 ffff880100474080 41 3 22 10 -1
4: 0500010A:8773 16EC97D1:0050 01 00000000:00000000 02:00000BDC 00000000 1000 0 10700849 2 ffff880104335440 57 3 18 10 -1
5: 0500010A:8772 16EC97D1:0050 01 00000000:00000000 02:00000BF5 00000000 1000 0 10698952 2 ffff88010040e440 46 3 0 10 -1
6: 0500010A:DD2C 0900010A:0016 01 00000000:00000000 02:0006E764 00000000 1000 0 9562907 2 ffff880104334740 22 3 30 5 4
7: 0500010A:AAA4 6A717D4A:0050 08 00000000:00000001 02:00000929 00000000 1000 0 10696677 2 ffff880106cc77c0 45 3 0 10 -1
所以我猜其中之一:50在第三列必须是stackoverflow:o)
更多细节请参阅man 5 proc。用sed等把它拆开,留给温和的读者做练习……
Nmap是正确的工具。 简单地使用nmap example.com -p 80
您可以从本地或远程服务器使用它。 它还可以帮助您识别防火墙是否正在阻止访问。