我需要一个Linux命令来列出所有在应用程序中使用的可用开放端口。

。如何列出未使用的空闲开放端口?

#1 楼

netstat -lntu


@askmish的答复将为您提供在tcp和udp端口上系统上运行的服务的列表,其中
正在侦听某些端口的端口

-l =显示端口号,请勿尝试解析服务名称

-n = tcp端口

-t = udp ports

-u =程序的名称

您不需要'p'参数,因为您只对获取哪些端口空闲而不是哪个端口感兴趣程序正在其上运行。

这仅显示系统上的哪些端口已用完。这不会告诉您网络的状态,例如如果您不支持NAT,并且希望可以从外部访问某些服务。或者,如果防火墙阻止了外部访问者的端口。在这种情况下,nmap可以提供帮助。
警告:仅在您控制的网络上使用nmap。另外,还有一些防火墙规则可以阻止nmap ping,您必须四处寻找选项以获取正确的结果。

评论


请注意,在许多系统上不建议使用netstat,而应使用ss。

– Johu
17年4月19日在21:44

但如果您在busybox上,则不包含ss

– jcollum
19年6月7日在15:52

#2 楼

由于不赞成使用net-tools,因此如果您的计算机上不存在ss,则可以使用netstat而不是netstat命令: />
ss -lntu


根据内置帮助:

netstat -lntu


评论


另一个有用的标志是-p,它显示套接字的进程ID。

– Talespin_Kit
19年2月6日在6:15

#3 楼

此命令将列出开放的网络端口及其拥有的进程:您还可以使用netstat -lnptu获得有关端口的更详细的结果。

评论


-p标志要求某些进程具有root特权,因此它将是sudo netstat -lnptu

–klaus se
2014年10月30日,1:17

#4 楼

所有打开的端口,包括响应流量:

netstat -tuwanp 2>/dev/null | awk '{print }' | sort | uniq -c | wc -l


评论


仅唯一端口号和仅IPv4的列表:netstat -tuwanp4 | awk'{print $ 4}'| grep':'|切-d“:” -f 2 |排序优衣库

– Aaron C. de Bruyn
2015年10月9日在20:13



+1用于显示如何从结果中过滤和提取数字。编辑以从netstat中删除stderr输出(在Ubuntu中将标头添加到结果中)。

– datashaman
16年4月4日在6:17

嗯,再三考虑。 -1为未回答问题。

– datashaman
16年4月4日在6:18

#5 楼

我对原始问题的看法是,他是在询问未使用的端口,而不是当前连接到服务的端口。如果是这种情况,除了列出已使用的端口并假定其他未使用端口外,没有其他方法可以列出它们。将无法打开小于1024的端口(您将需要root权限)。

#6 楼

以下命令将在任何以与Ubuntu / Debian格式相同的格式输出的Unix上运行-本地地址在第4列中,并且输出在顶部包括2行标题。如果这些数字中的任何一个都不相同,请调整下面的awk命令。

如果仅要使用IPv4: :

netstat -lnt | awk 'NR>2{print }' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq


如果两者都需要:正在所有接口上监听。如果要列出在localhost接口上侦听的所有端口,请使用以下命令:

netstat -lnt | awk 'NR>2{print }' | grep -E ':::' | sed 's/.*://' | sort -n | uniq


#7 楼

尝试

sudo netstat -plnt | grep -E '(0.0.0.0:|:::|127.0.0.1:|::1:)' |  awk 'NR>2{print }' | sort -n  | uniq


看看这个。