2013-03-05 76 views
2

我想使用命令tcpdump提取並收集一些客戶端IP地址,但只是無法弄清楚如何讓grep/sed/awk只給我第一個輸出的IP地址。如果我運行以下內容從tcpdump(在OpenBSD上)中提取客戶端IP地址

# tcpdump -t -i vlan4 -n ip dst host 192.168.2 
tcpdump: listening on vlan4, link-type EN10MB 

tcpdump: WARNING: compensating for unaligned libpcap packets 

10.28.6.1.29447 > 192.168.2.62.22: P 3758838950:3758839034.. 

10.28.6.1.29447 > 192.168.2.62.22: P 84:136(52) ack 117.. 

10.28.6.1.29447 > 192.168.2.62.22: P 136:188(52) ack 233.. 

10.28.6.1.29447 > 192.168.2.62.22: . ack 349 win 251 (DF).. 

我只想在沒有端口號的每一行上得到第一個ip。所以從上面的輸出我想要得到的只是.....

10.28.6.1 

10.28.6.1 

10.28.6.1 

10.28.6.1 

感謝

回答

0
perl -lane '$F[0]=~s/(.*)\..*/$1/g;print $F[0]' your_file 
1

試試這個剪線:

cut -f1-4 -d "." 

測試與您的數據:

kent$ echo "10.28.6.1.29447 > 192.168.2.62.22: P 3758838950:3758839034.. 

10.28.6.1.29447 > 192.168.2.62.22: P 84:136(52) ack 117.. 

10.28.6.1.29447 > 192.168.2.62.22: P 136:188(52) ack 233.. 

10.28.6.1.29447 > 192.168.2.62.22: . ack 349 win 251 (DF).."|cut -f1-4 -d "." 
10.28.6.1 

10.28.6.1 

10.28.6.1 

10.28.6.1 
+0

輝煌的,完美的作品。謝謝。 – user2137455 2013-03-05 21:09:27