題 獲取Linux中的開放端口列表


我需要一個Linux命令來列出在應用程序中使用的所有空閒開放端口

lsof -i TCP| fgrep LISTEN

沒有看到幫助,因為它列出的端口不一定免費使用。如何列出未使用的免費開放端口?


157
2018-01-08 07:34


起源


//,如果主機上沒有netstat怎麼辦? - Nathan Basanese


答案:


netstat -lntu

正如@askmish所回复的那樣,將為您提供在tcp和udp端口上運行的系統服務列表

  • -l =只監聽某個端口的服務
  • -n =顯示端口號,不要嘗試解析服務名稱
  • -t = tcp端口
  • -u = udp端口
  • -p =程序的名稱

您不需要'p'參數,因為您只想獲得哪些端口是空閒的而不是在哪個程序上運行。

但這僅顯示系統上的哪些端口已用完。這並不能告訴您網絡的狀態,例如如果您支持NAT,並且您希望從外部訪問某些服務。或者,如果防火牆阻止外部訪問者的端口。在那種情況下,nmap來救援。 警告:僅在您控制的網絡上使用nmap。此外,有防火牆規則可以阻止nmap ping,你必須擺弄選項以獲得正確的結果。


227
2018-01-08 11:51



注意 netstat 在許多系統上都被棄用了 ss 應該用來代替。 - Johu


以來 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

59
2018-06-08 20:19





此命令將列出打開的網絡端口以及擁有它們的進程:

netstat -lnptu

之後您可以將結果過濾到您的確切規格。

你也可以使用 nmap 有關端口的更精細結果。


19
2018-01-08 07:45



-p標誌需要某些進程的root權限,所以它就是 sudo netstat -lnptu - klaus se


所有打開的端口包括響應流量:

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

4
2017-11-03 04:33



的列表 只是 唯一的端口號,只有IPv4: netstat -tuwanp4 | awk '{print $4}' | grep ':' | cut -d ":" -f 2 | sort | uniq - Aaron C. de Bruyn
+1表示如何過濾和提取結果中的數字。編輯從netstat中刪除stderr輸出(在Ubuntu中為結果添加標題)。 - datashaman
嗯,再想一想。 -1表示沒有回答問題。 - datashaman


以下命令適用於以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

0
2018-04-04 06:29