Nmap
nmap 可以只顯示特定埠打開的主機嗎?
可以
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}'