Nmap

nmap 可以只顯示特定埠打開的主機嗎?

  • February 8, 2022

可以nmap列出本地網路上同時打開 SSH 和 HTTP 的所有主機嗎?為此,我可以執行類似:

nmap 192.168.1.1-254 -p22,80 --open

但是,這列出了打開任何列表埠的主機,而我想要打開所有埠的主機。此外,輸出非常詳細:

# nmap 192.168.1.1-254 -p22,80 --open

Starting Nmap 6.47 ( http://nmap.org ) at 2015-12-31 10:14 EST
Nmap scan report for Wireless_Broadband_Router.home (192.168.1.1)
Host is up (0.0016s latency).
Not shown: 1 closed port
PORT   STATE SERVICE
80/tcp open  http

Nmap scan report for new-host-2.home (192.168.1.16)
Host is up (0.013s latency).
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 254 IP addresses (7 hosts up) scanned in 3.78 seconds

我正在尋找的是簡單的輸出:

192.168.1.16

因為上面的主機是唯一一個所有埠都打開的主機。

我當然可以對輸出進行後處理,但我不想依賴 nmap 的輸出格式,如果有辦法的話,我寧願讓 nmap 來做。

在 Nmap 中沒有辦法做到這一點,但是你關於不想“依賴於 nmap 的輸出格式”的評論讓我指出 Nmap 有兩種穩定的輸出格式用於機器可讀的解析。較舊的是Grepable 輸出 ( -oG),它適用於使用 perl、awk 和 grep 進行處理,但缺少一些更高級的輸出(如 NSE 腳本輸出、埠原因、traceroute 等)。更完整的格式是XML 輸出 ( -oX),但對於您的目的來說它可能是多餘的。

您可以使用 、 或 (兩種格式加上“正常”文本輸出)將這些輸出保存到文件中-oG-oX-oA可以將其中一種直接發送到標準輸出:nmap 192.168.1.1-254 -p22,80 --open -oG - | awk '/22\/open.*80\/open/{print $2}'

引用自:https://unix.stackexchange.com/questions/252517