Bash片断,看看有什么东西在港口上听?

我想看看是否有东西在本地端口上监听。 我打算使用nc并检查退出代码。

像这样的东西:

 echo "" | nc localhost 14881 echo $? 

还有其他build议吗?

lsof -i:14881

如果你是根:

 netstat -lnp | grep ':14881 ' 

也许netstat会更好,因为端口可能不在本地主机上侦听,或者可能被iptables阻止:

 netstat -ln | grep :14881 echo $? 

如果没有匹配,Grep将以1退出。 如果只需要tcp和/或udp,请将-u或-t开关添加到netstat。

netstat -ano | egrep LISTEN | egrep tcp | egrep $ PORTNUMBER

sudo ss -lntup会告诉你什么在监听TCP / UDP连接 – 你可以根据需要过滤输出(例如,在127.0.0.1,:: sudo ss -lntup上监听)。

如果你有python,你也可以创build一个愚蠢的portscanner(尽pipe对于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 

我没有听到这个端口,我用这个在bash中退出。

 $port="14881" if [[ $(netstat -ltn | grep ":${port} " | wc -l) -eq "0" ]] ; then echo "Port $port not listened to" && exit 1; fi 
  • 使用bash双括号并与wc进行比较以便于阅读