tshark:将数据包保存在环形缓冲区文件中并应用显示过滤器

问题描述 投票:0回答:1

我需要运行tshark来长时间记录数据包。在保存数据包时,我还想应用显示过滤器,因为它们被解析以检测错误。

不要填充磁盘并创建巨大的文件我想将其与

--ring-buffer
选项一起使用问题是 tshark 不支持同时应用显示过滤器和保存到文件。

我可以使用

tee
与 tshark 或 tcpdump 进行管道传输,但这不适用于环形缓冲区文件。或者为此使用 2 个单独的进程,但这仍然是创建和删除输出文件的问题。

只有 tshark 才有可能实现这个功能吗?或者我应该寻找其他工具,例如

tee
来生成循环缓冲区?

谢谢

networking tshark
1个回答
0
投票

也许使用

tcpdump
tshark
的组合对您有用,如本例所示?

tcpdump -i eth0 -W 10 -C 1 -w file.pcap -z tshark.sh

tshark.sh
可执行脚本的内容:

#!/bin/sh
echo "Post processing $1"
tshark -Y "some display filter" -r $1
echo ""

每个文件达到其大小限制后,将调用

-z postrotate
命令,并且
tshark
将能够对文件进行后处理。这本身并不是实时的,因为在
tshark
运行之前会有延迟,并且它会同时对文件中的所有数据包执行此操作,因此您一次会获得批量输出。您可以通过试验传递给
-C
的值来在一定程度上控制延迟。较大的值将创建更大的文件,但也会在
tshark
后处理中产生更大的延迟。

理想情况下,您还可以指定

tcpdump
-G rotate_seconds
选项,但手册页当前指示, “如果与 -C-G 一起使用,则 -W 选项当前将被忽略,并且只会影响文件名。” 我不确定为什么会出现这种情况,但您可以考虑提交
tcpdump
增强错误请求
,看看是否有人愿意更改此行为。

您还应该注意问题#1015:当 tcpdump 终止时,postrotate-command 不会运行

© www.soinside.com 2019 - 2024. All rights reserved.