问题:存储缓冲区并保存在触发器上的网络捕获工具集

是否有一个简单的工具或实用程序可以用来缓冲最后 3 分钟的网络捕获,如果事件可能通过 GPIO 触发器或 UDP 消息发生,我将最后 3 分钟和接下来的 1 分钟写入磁盘?我们的网络冻结发生在 40 分钟到 14 小时之间,我想在检测到的事件时间附近捕获网络流量,以更好地了解情况。我以前使用过 tcpdump 和 wireshark,但总是手动触发捕获的开始和停止,我需要将停止时间自动化,并希望避免记录一堆不相关的数据。如果重要的话,我们的大多数开发环境都使用 Ubuntu 18.04。

在这一点上,我们不限于任何语言或在需要时从头开始构建工具。

解答

您可以尝试运行一个脚本来启动dumpcap的 2 个实例,一个用于将所有流量捕获到有限持续时间和文件的环形缓冲区中,另一个实例仅等待相关捕获事件。一旦捕获事件发生,dumpcap的第二个实例可以终止,休眠 1 分钟,然后剩余的dumpcap实例可以被杀死。例如:

#!/bin/sh

echo "开始捕获实例..."

dumpcap -i eth0 -f "TBD 捕获过滤器" -b 持续时间:180 -b 文件:2 -w file.pcapng &

echo "开始事件实例..."

dumpcap -i eth0 -f "待定事件捕获过滤器" -c 1

echo "得到事件;睡眠 60 秒 ..."

睡觉 60

echo "正在杀死所有 dumpcap 实例 ..."

killall 转储盖

回声“完成”。

捕获完成后,您应该留下最多 2 个包含最近 6 分钟(最大)数据的文件。如果您愿意,您甚至可以在脚本中添加mergecap命令以将 2 个文件合并在一起:mergecap -F pcapng file.pcapng file_*.pcapng

如果第二个dumpcap实例留下了它的临时捕获文件,如果你愿意,你也可以清理它,例如rm -f /tmp/wireshark*

Logo

Ubuntu 社区为您提供最前沿的新闻资讯和知识内容

更多推荐