tcpdump获得在特定端口上请求的唯一IP

时间:2018-08-01 05:56:12

标签: linux awk tcpdump

我想转储在特定端口(例如10301)上请求的唯一IP。我在下面使用了命令:

sudo tcpdump port 10301 -nn -q ip -l | awk '{ ip = gensub(/([0-9]+.[0-9]+.[0-9]+.[0-9]+)(.*)/,"\\1","g",$3); if(!d[ip]) { print ip; d[ip]=1; fflush(stdout) } }'

源自this链接。 但我收到此错误:

tcpdump: syntax error

在命令中没有port 10301的输出:

5.22.96.170
100.116.219.232
100.123.221.113
172.17.108.177
100.120.83.187
100.123.95.221

1 个答案:

答案 0 :(得分:1)

我很抱歉您混用了tcpdump的选项和表达式,请检查man tcpdump并尝试:

sudo tcpdump -nn -q -l ip and port 80 | awk '{ ip = gensub(/([0-9]+.[0-9]+.[0-9]+.[0-9]+)(.*)/,"\\1","g",$3); if(!d[ip]) { print ip; d[ip]=1; fflush(stdout) } }'