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

时间:2013-03-05 20:58:24

标签: regex sed awk grep

我正在尝试使用命令tcpdump提取和收集一些客户端IP地址,但是无法弄清楚如何让grep / sed / awk只给出输出的第一个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

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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