2014-01-25 123 views
2

我正在使用nmap扫描启用了SSH的服务器。这是从扫描NMAP输出:我该如何grep这个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扫描)

+0

也许“cat file | grep”你的搜索“> output.txt”? – pregmatch

+0

@pregmatch恭喜您[无用猫使用奖](http://partmaps.org/era/unix/award.html) – bonsaiviking

+0

@bonsaiviking没有问题,任何时候:) – pregmatch

回答

8

首先,您可能想要花费一些时间与nmap手册页,这将向您显示有用的选项,如-oG选项,它产生“greppable输出”。例如,当我的家庭网络上运行,像这样:

$ 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/// 

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

$ 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 

...这是我觉得你在找什么。

+0

谢谢。在阅读本文之前,我实际上找到了另一个解决方案,它几乎是一回事。 – Sedulous

+0

如果你使用'--open',你只会看到开放端口 – iNoob