2009-12-03 70 views
0

我需要編寫一個bash腳本,它將帶有一個可打印的nmap輸出文件,該文件顯示帶有端口80的IP地址,並將端口80打開的IP複製到另一個文本文件。輸出看起來類似於此:如何編寫bash腳本來搜索文件中的IP並將它們寫入另一個文件?

# Nmap 4.76 scan initiated Thu Dec 3 13:36:29 2009 as: nmap -iL ip.txt -p 80 -r -R -PN --open -oA output 
Host: 192.168.1.100() Status: Up 
Host: 192.168.1.100() Ports: 80/open/tcp//http/// 
Host: 192.168.1.100() Status: Up 
# Nmap done at Thu Dec 3 13:36:29 2009 -- 3 IP addresses (3 hosts up) scanned in 0.28 seconds 

我對bash腳本編程相當新,所以我不確定從哪裏開始。如果你能用這個腳本來幫助我,我將非常感激。

回答

2

這可以降低到一個awk電話:

awk '/80\/open/{print $2}' infile > iplist_port_80 
1

使用grep和sed/awk的

grep -e '80/open/tcp' infile | awk '{print $2}' | sort -u > outfile 

將是我的第一次嘗試。

+0

你並不需要重定向將文件轉換爲'grep' - 將文件名作爲參數。 – 2009-12-03 19:38:55

+0

@丹尼斯 - 我懇求「腦子小故障」。修正了,謝謝。 – retracile 2009-12-03 19:46:17

1

不熟悉NMAP調用和輸出格式,不過,這應該工作:

nmap | grep -e 'Ports:.80\/' |sed 's/Host:.//;s/.(.*//'|sort -u > out 
+0

你應該能夠將'sed'的這兩個調用合併成一個(也許有多個'-e'子句)。 – 2009-12-03 19:40:35

+0

@丹尼斯威廉姆森:你說得對,兩個人太過分了 – catwalk 2009-12-03 19:47:03

相關問題