sim*_*eer 1 ubuntu networking tcpdump wireshark
是否有一个简单的工具或实用程序可以用来缓冲最后 3 分钟的网络捕获,如果事件发生可能是通过 GPIO 触发器或 UDP 消息我将最后 3 分钟和接下来的 1 分钟写入磁盘?我们的网络冻结发生在 40 分钟到 14 小时之间,我想捕获检测到的事件时间周围的网络流量,以更好地了解情况。我过去曾使用过 tcpdump 和wireshark,但总是手动触发捕获的开始和停止,我需要自动停止时间,并希望避免记录一堆不相关的数据。如果重要的话,我们的大多数开发环境都使用 Ubuntu 18.04。
此时,如果需要,我们不限于任何语言或从头开始构建工具。
您可以尝试运行一个脚本来启动 2 个实例dumpcap,一个将所有流量捕获到有限持续时间和文件的环形缓冲区中,另一个实例仅等待相关的捕获事件。一旦捕获事件发生,第二个实例dumpcap可以终止,休眠1分钟,然后剩余的dumpcap实例可以被杀死。例如:
#!/bin/sh echo“开始捕获实例...” dumpcap -i eth0 -f“TBD 捕获过滤器”-b 持续时间:180 -b 文件:2 -w file.pcapng & echo“正在启动事件实例...” dumpcap -i eth0 -f“TBD 事件捕获过滤器”-c 1 echo“发生事件;休眠 60 秒……” 睡眠 60 echo“正在杀死所有 dumpcap 实例...” 杀戮转储帽 回声“完成”。
捕获完成后,您应该保留最多 2 个包含最后 6 分钟(最多)数据的文件。如果您愿意,您甚至可以mergecap向脚本添加命令以将两个文件合并在一起mergecap -F pcapng file.pcapng file_*.pcapng:
如果第二个dumpcap实例留下了临时捕获文件,您也可以根据需要清理它,例如,rm -f /tmp/wireshark*