从tcpdump(在OpenBSD上)中提取客户端IP地址

问题描述:

我想使用命令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 

感谢

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

试试这个剪线:

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