从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
辉煌的,完美的作品。谢谢。 – user2137455 2013-03-05 21:09:27