Amandasaurus Asked: 2009-07-07 05:36:53 +0800 CST2009-07-07 05:36:53 +0800 CST 2009-07-07 05:36:53 +0800 CST Bash 片段来查看端口上是否有东西在监听? 772 我想看看是否有东西正在监听本地主机上的端口。我打算使用nc并检查退出代码。 像这样的东西: echo "" | nc localhost 14881 echo $? 还有其他建议吗? scripting networking bash snippet 6 个回答 Voted Best Answer lexsys 2009-07-07T06:15:29+08:002009-07-07T06:15:29+08:00 lsof -i:14881 Kyle Brandt 2009-07-07T05:42:14+08:002009-07-07T05:42:14+08:00 也许 netstat 会更好,因为端口可能没有在 localhost 上侦听,或者它可能被 iptables 阻止: netstat -ln | grep :14881 echo $? 如果没有匹配,Grep 将以 1 退出。如果您只需要 tcp 和/或 udp ,请将 -u 或 -t 开关添加到 netstat。 Dan Carley 2009-07-07T05:40:54+08:002009-07-07T05:40:54+08:00 如果你是 root: netstat -lnp | grep ':14881 ' Bob 2017-03-10T00:25:52+08:002017-03-10T00:25:52+08:00 当没有人监听此端口时,我在 bash 中使用它来退出。 $port="14881" if [[ $(netstat -ltn | grep ":${port} " | wc -l) -eq "0" ]] ; then echo "Port $port not listened to" && exit 1; fi 使用 bash 双括号并与 wc 进行比较以便于阅读.. flybywire 2009-07-07T05:42:29+08:002009-07-07T05:42:29+08:00 网络统计-ano | egrep 听 | egrep tcp | egrep $PORTNUMBER iwaseatenbyagrue 2017-03-10T01:43:18+08:002017-03-10T01:43:18+08:00 sudo ss -lntup将告诉您正在侦听 TCP/UDP 连接的内容 - 您可以根据需要过滤输出(例如侦听 127.0.0.1、::1、0.0.0.0)。 如果你有 python,你也可以创建一个愚蠢的端口扫描器(不过,只有 TCP 才真正值得): import socket for p in range(1,2**16): try: s = socket.create_connection(('127.0.0.1',p)) print "Listener on tcp/{}".format(p) except: continue
lsof -i:14881
也许 netstat 会更好,因为端口可能没有在 localhost 上侦听,或者它可能被 iptables 阻止:
如果没有匹配,Grep 将以 1 退出。如果您只需要 tcp 和/或 udp ,请将 -u 或 -t 开关添加到 netstat。
如果你是 root:
当没有人监听此端口时,我在 bash 中使用它来退出。
网络统计-ano | egrep 听 | egrep tcp | egrep $PORTNUMBER
sudo ss -lntup
将告诉您正在侦听 TCP/UDP 连接的内容 - 您可以根据需要过滤输出(例如侦听 127.0.0.1、::1、0.0.0.0)。如果你有 python,你也可以创建一个愚蠢的端口扫描器(不过,只有 TCP 才真正值得):