從 Nmap 輸出中 Grepp 幾行

從 Nmap 輸出中 Grepp 幾行

我提前道歉,因為這是一個簡單的問題。

所以我嘗試掃描 C 類以透過 IP 識別所有郵件伺服器。絕大多數 IP 不是郵件伺服器。我正在嘗試過濾掉那些。

我嘗試了以下方法,但他們沒有返回我想要的東西。

nmap -p 25 192.168.15.1-254 | grep report && grep open 

nmap -p 192.168.15.1-254 (grep report | grep open)

我應該使用其他實用程式嗎?還是我的文法有問題?

答案1

我不清楚,您是否需要僅包含報告或打開的字串?如果是這樣,請使用: grep:

nmap | grep -E "report|open"

sed

nmap | sed '/report\|open/!d'

如果同時報告和打開

grep

nmap | grep report | grep open

sed

nmap | sed '/report.*open\|open.*report/!d'

答案2

--open嘗試將選項傳遞給 Nmap ,而不是使用 grep 進行後處理。這將隱藏所有關閉或過濾的連接埠。您也可以使用-oG-oA選項來輸出“grepable”結果。這是一個我認為您正在尋找的範例:

nmap -p 25 --open -oA smtp-servers-%y%m%d 192.168.15.0/24

結果將在smtp-servers-20120607.nmapsmtp-servers-20120607.gnmap、 和中smtp-servers-20120607.xml。您可以取得開放 SMTP 伺服器的 IP 位址,如下所示:

awk '/\<25/open/tcp/ {print $2}' smtp-servers-*.gnmap

如果您確實需要將所有這些集中在一個管道中,您可以這樣做:

nmap -p 25 --open -oG - 192.168.15.0/24 | awk '/\<25/open/tcp/ {print $2}'

答案3

您需要一個管道來進行這兩個grep呼叫:

nmap ... | grep report | grep open

或者,既然你用 標記了awk,只是提供資訊:

nmap ... | awk '/report/ && /open/'

sed

nmap ... | sed '/report/!d;/open/!d'

相關內容