从 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'

相关内容