我如何grep这个nmap扫描?

时间:2014-01-25 22:56:19

标签: linux grep nmap

我正在使用nmap扫描启用SSH的服务器。这是nmap从扫描中输出的内容:

SSH禁用服务器示例:

Nmap scan report for 70.0.0.109.rev.sfr.net (109.0.0.70)
Host is up (0.15s latency).
PORT   STATE  SERVICE
22/tcp closed ssh

SSH启用服务器示例:

Nmap scan report for 255.0.0.109.rev.sfr.net (109.0.0.255)
Host is up (0.12s latency).
PORT   STATE    SERVICE
22/tcp filtered ssh

我想使用grep将所有启用SSH的服务器导出到文件中。该文件仅包含启用SSH的服务器的IP地址。

例如:

1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
5.5.5.5

我找不到会执行此操作的grep命令。我只需要使用grep(或任何其他Linux命令)将启用SSH的IP地址导出到文件中。谢谢,所有的帮助表示赞赏。 (顺便说一下,我正在从文件中读取这个nmap扫描)

1 个答案:

答案 0 :(得分:10)

首先,您可能希望花一些时间使用nmap手册页,这将显示有用的选项,例如-oG选项,它会生成“greppable output”。例如,在我的家庭网络上运行时,如下所示:

$ nmap -p 22 -oG - 192.168.1.0/24

我得到这样的输出:

Host: 192.168.1.1 (gw.house)    Status: Up
Host: 192.168.1.1 (gw.house)    Ports: 22/closed/tcp//ssh///
Host: 192.168.1.3 ()    Status: Up
Host: 192.168.1.3 ()    Ports: 22/closed/tcp//ssh///
Host: 192.168.1.20 (fileserver.house)   Status: Up
Host: 192.168.1.20 (fileserver.house)   Ports: 22/open/tcp//ssh///
Host: 192.168.1.29 ()   Status: Up
Host: 192.168.1.29 ()   Ports: 22/closed/tcp//ssh///
Host: 192.168.1.52 (laptop.house)   Status: Up
Host: 192.168.1.52 (laptop.house)   Ports: 22/open/tcp//ssh///

如果我想要打开端口22的IP地址列表,我可以运行:

$ nmap -p 22 -oG - 192.168.1.24 | grep 22/open

哪会让我:

Host: 192.168.1.20 (arcadia.house)  Ports: 22/open/tcp//ssh///
Host: 192.168.1.52 (lkellogg-pk115wp.house) Ports: 22/open/tcp//ssh///

如果我想只是的IP地址,我会使用awk

$ nmap -p 22 -oG - 192.168.1.24 | awk '/22\/open/ {print $2}'

哪会让我:

192.168.1.20
192.168.1.52

...我认为你在寻找什么。