25

假设我有数百万个数据包要查看,我想查看一个数据包被发送到某个端口号的次数。

以下是一些数据包:

10:27:46.227407 IP 85.130.236.26.54156 > 139.91.133.120.60679: tcp 0
10:27:46.337038 IP 211.142.173.14.80 > 139.91.138.125.56163: tcp 0
10:27:46.511241 IP 211.49.224.217.3389 > 139.91.131.47.6973: tcp 0

我想在这里查看第二个端口号:

60679、53163、6973等

所以我可以使用:

grep -c '\.80:' output.txt

计算使用端口 80 的所有时间。但是有没有办法让它显示所有使用的端口以及在这个文件中找到它的次数。像这样的东西也最好排序,所以我可以看到最常用的端口:

.80: - 54513
.110: - 12334
.445: - 412
4

1 回答 1

50

uniq -c。你会想要取出你想要的位,对结果进行排序,通过 uniq 管道,对输出进行排序。可能是这样的:

egrep '\.[0-9]+:' output.txt | sort | uniq -c | sort -nr

澄清:我在这里使用了 grep ,因为不清楚你的 output.txt 格式是什么样的,但你会想要实际删除端口号位,可能是通过cutor awk

编辑:要获取端口,您可以在句号上剪切一次,然后在冒号上再次剪切:

cut -d. -f10 < output.txt | cut -d: -f1

(或完成相同事情的十几种其他方法中的任何一种。)这将为您提供未排序的端口列表。然后:

cut -d. -f10 < output.txt | cut -d: -f1 | sort | uniq -c | sort -nr
于 2012-04-24T15:33:10.653 回答