2014-01-25 87 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