2016-03-27 128 views
0

我有我的輸出結果NMAP到一個名爲的test.txt文件,它看起來像這樣:grep的nmap的輸出

Nmap scan report for 192.168.1.5 
Host is up (0.13s latency). 
PORT STATE SERVICE VERSION 
23/tcp open telnet Linux telnetd 
-- 
Nmap scan report for 192.168.1.7 
Host is up (0.13s latency). 
PORT STATE SERVICE VERSION 
80/tcp open http  Popper 
-- 
Nmap scan report for 192.168.1.20 
Host is up (0.13s latency). 
PORT STATE SERVICE VERSION 
110/tcp open pop3 Dove 

我要輸出用grep從文件的結果在我的終端和管道將結果顯示在格式:IP地址,然後打開的端口是這樣的:

192.168.10.2 
80 
223 
53 
192.168.10.7 
80 
223 
+0

良好的示例數據和所需的輸出(pluse-uno!),但您忘記顯示您的代碼(minus-uno!)。 Stackoverflow不是一個免費的編碼服務。幾乎任何解決你的問題的嘗試都會表明,你不只是在尋找一個人爲你做這件事。爲了給你一個提示,你可以使用'ncat ... | sed's/Nmap scan report for //; s/Host is up [(] //''以移除不需要的標題信息。使用我提供的擴展它來擺脫所有不受歡迎的標題信息**並更新您的Q **。祝你好運。 – shellter

回答

0

我會做到以下幾點:

  1. 獲取一個正則表達式來匹配nmap輸出的ip和端口。您可以利用兩者的位置,即端口位於行首(^)並以'/10'字符結尾,並且ip是行中的最後一項($)。
  2. 使用grep -o可以查找任何正則表達式(查看正則表達式(|)上的OR運算符)。這會將輸出減少到僅匹配。
1

你可能想:

cat test.txt | sed 's/Nmap scan report for //' | sed '/Host is/d' | sed '/Not shown/d' | sed '/All/d' | sed '/PORT /d' | cut -f1 -d"/" | sed '/^$/d' | sed '/--/d' 

對於nmap -F 192.168.0.1/24 > test.txt

cat test.txt | tail -n+3 | sed '/Nmap done/d' | awk 'NR>1{print l}{l=$0}' | sed 's/Nmap scan report for //' | sed '/Host is/d' | sed '/Not shown/d' | sed '/All/d' | sed '/PORT /d' | cut -f1 -d"/" | sed '/^$/d' 

笑話。它沒有任何意義...使用nmap與XML輸出-oX
閱讀:https://nmap.org/book/output-formats-xml-output.html