直接从Tcpdump输出中提取IP

问题描述

我想在Tcpdump命令输出提取IP。

tcpdump -nei eth0 and src 10.10.10.1

上述命令的样本输出。由于输出很大,因此我将其发布在下面的链接中。

https://pastebin.pl/view/3b6ab16d

我尝试过的命令

tcpdump -nei eth0 and src 10.10.10.1 | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"

tcpdump -nei eth0 and src 10.10.10.1 | awk '{sub(/^.*> /,"",$0); sub(/:.*$/,$0); sub(/\.[^\.][^\.]*$/,$0); print $0}'

我希望输出

140.345.12.45
140.345.12.45
140.345.12.45
140.345.12.45
140.345.12.45
140.345.12.45

仅IP地址。有人请帮我.. T.I.A

解决方法

根据显示的示例,您可以尝试以下操作。经过测试并在链接https://ideone.com/ocWd19

中编写
awk '
match($0,/> ([0-9]+\.){3}[0-9]+/){
  print substr($0,RSTART+2,RLENGTH-2)
}' Input_file