我在 tshark 中使用这个命令:
tshark -r pcapfile "tcp and ip.src==192.168.1.1" -T text -V -x | grep 'Total Length'
这实际上会解析 pcap 中来自源 ip 的连接,并查找每个数据包的总长度(以字节为单位)。我得到如下输出:
Total Length: 125
Total Length: 210
Total Length: 40
Total Length: 125
> etc, etc....
我需要做的是从总长度中获取数字并将它们相加,这样我就能了解在单个 IP 的 pcap 时间范围内通过网络传输了多少数据。
是否有命令可以添加到我用来执行此操作的命令的末尾?或者是否有方法可以将其定向到 stdout,然后将其传送到可以解析和计算我想要的内容的程序?有谁知道 tcpdump 中可以执行此操作的类似命令?
答案1
awk
可以对一列数字求和。类似这样的方法应该可以解决问题。
假设你的 tshark 的输出如下foo.txt
:
$ cat foo.txt | awk '{ sum += $3 } END { print sum }'
您也可以将“grep”的输出直接传送到awk
,它将以类似的方式工作。
答案2
你可以纯粹依靠tshark
IO 统计计算器的统计选项来做到这一点:
tshark -r pcapfile -z io,stat,0,"SUM(frame.len)frame.len && ip.src == 192.168.1.1 && ip.proto == 6"
这将显示一个板,其中的SUM
列是您要查找的数据。