我需要一个Linux命令来列出所有在应用程序中使用的可用开放端口
lsof -i TCP| fgrep LISTEN
由于列出的端口不一定免费供使用,因此没有帮助。如何列出未使用的空闲开放端口?
我需要一个Linux命令来列出所有在应用程序中使用的可用开放端口
lsof -i TCP| fgrep LISTEN
由于列出的端口不一定免费供使用,因此没有帮助。如何列出未使用的空闲开放端口?
Answers:
netstat -lntu
@askmish的答复将为您提供在tcp和udp端口上的系统上运行的服务列表,其中
-l
=仅在某个端口上监听的服务-n
=显示端口号,请勿尝试解析服务名称-t
= TCP端口-u
= UDP端口-p
=程序名称您不需要'p'参数,因为您只想获取空闲的端口,而不是正在运行的程序。
但是,这仅显示系统上的哪些端口已用完。这不会告诉您网络的状态,例如,如果您位于NAT之后,并且希望某些服务可以从外部访问。或者,如果防火墙阻止了外部访问者的端口。在这种情况下,nmap可以提供帮助。警告:仅在您控制的网络上使用nmap。另外,还有一些防火墙规则可能会阻止nmap ping,您必须四处寻找选项以获取正确的结果。
ss
不包括如果您在busybox 上
由于net-tools
已被弃用,你可以使用ss
命令来代替netstat
,如果netstat
不存在你的机器上:
ss -lntu
应该类似于
netstat -lntu
根据内置的帮助:
-n, --numeric don't resolve service names
-l, --listening display listening sockets
-t, --tcp display only TCP sockets
-u, --udp display only UDP sockets
此命令将列出打开的网络端口以及拥有它们的进程:
netstat -lnptu
之后,您可以根据您的具体要求过滤结果。
您还可以使用nmap
有关端口的更详细的结果。
sudo netstat -lnptu
所有打开的端口,包括响应流量:
netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l
netstat -tuwanp4 | awk '{print $4}' | grep ':' | cut -d ":" -f 2 | sort | uniq
以下命令将在任何以与Ubuntu / Debian格式相同的格式输出的Unix上运行-本地地址在第4列中,并且输出在顶部包括2行标题。如果这些数字之一不同,请调整以下awk命令。
如果仅需要IPv4:
netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq
如果仅需要IPv6:
netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq
如果您两者都想要:
netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq
该命令输出在所有接口上监听的端口号列表。如果要列出在localhost接口上侦听的所有端口,请使用以下命令:
netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq
netstat
在许多系统上已不ss
建议使用它,而应改用它。