我提前道歉,因为这是一个简单的问题。
所以我尝试扫描 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.nmap
、smtp-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'