存储缓冲区并保存在触发器上的网络捕获工具集
Network capture toolset that store a buffer and saves on a trigger
是否有一个简单的工具或实用程序我可以用来缓冲网络捕获,比如最后 3 分钟,如果事件可能是通过 GPIO 触发器或 UDP 消息发生的,我会写最后 3 分钟和接下来的 1 分钟到磁盘?我们的网络冻结发生在 40 分钟到 14 小时之间,我想捕获检测到的事件时间前后的网络流量,以更好地了解情况。我以前使用过 tcpdump 和 wireshark,但总是手动触发捕获的开始和停止,我需要自动停止时间,并希望避免记录一堆不相关的数据。如果重要的话,我们的大多数开发环境都使用 Ubuntu 18.04。
此时,我们不限于任何语言或根据需要从头开始构建工具。
您可以尝试 运行 启动 2 个 dumpcap
实例的脚本,一个将所有流量捕获到有限持续时间和文件的环形缓冲区中,另一个实例仅等待捕获有问题的事件。一旦捕获事件发生,dumpcap
的第二个实例可能会终止,休眠 1 分钟,然后剩余的 dumpcap
实例可能会被杀死。例如:
#!/bin/sh
echo "Starting capture instance ..."
dumpcap -i eth0 -f "TBD Capture Filter" -b duration:180 -b files:2 -w file.pcapng &
echo "Starting event instance ..."
dumpcap -i eth0 -f "TBD Event Capture Filter" -c 1
echo "Got event; sleeping for 60 seconds ..."
sleep 60
echo "Killing all dumpcap instances ..."
killall dumpcap
echo "Done."
捕获完成后,您应该会留下最多 2 个包含最后 6 分钟(最大值)数据的文件。如果您愿意,您甚至可以向脚本添加 mergecap
命令以将 2 个文件合并在一起:mergecap -F pcapng file.pcapng file_*.pcapng
.
如果第二个 dumpcap
实例留下了它的临时捕获文件,您也可以根据需要清理它,例如 rm -f /tmp/wireshark*
是否有一个简单的工具或实用程序我可以用来缓冲网络捕获,比如最后 3 分钟,如果事件可能是通过 GPIO 触发器或 UDP 消息发生的,我会写最后 3 分钟和接下来的 1 分钟到磁盘?我们的网络冻结发生在 40 分钟到 14 小时之间,我想捕获检测到的事件时间前后的网络流量,以更好地了解情况。我以前使用过 tcpdump 和 wireshark,但总是手动触发捕获的开始和停止,我需要自动停止时间,并希望避免记录一堆不相关的数据。如果重要的话,我们的大多数开发环境都使用 Ubuntu 18.04。
此时,我们不限于任何语言或根据需要从头开始构建工具。
您可以尝试 运行 启动 2 个 dumpcap
实例的脚本,一个将所有流量捕获到有限持续时间和文件的环形缓冲区中,另一个实例仅等待捕获有问题的事件。一旦捕获事件发生,dumpcap
的第二个实例可能会终止,休眠 1 分钟,然后剩余的 dumpcap
实例可能会被杀死。例如:
#!/bin/sh echo "Starting capture instance ..." dumpcap -i eth0 -f "TBD Capture Filter" -b duration:180 -b files:2 -w file.pcapng & echo "Starting event instance ..." dumpcap -i eth0 -f "TBD Event Capture Filter" -c 1 echo "Got event; sleeping for 60 seconds ..." sleep 60 echo "Killing all dumpcap instances ..." killall dumpcap echo "Done."
捕获完成后,您应该会留下最多 2 个包含最后 6 分钟(最大值)数据的文件。如果您愿意,您甚至可以向脚本添加 mergecap
命令以将 2 个文件合并在一起:mergecap -F pcapng file.pcapng file_*.pcapng
.
如果第二个 dumpcap
实例留下了它的临时捕获文件,您也可以根据需要清理它,例如 rm -f /tmp/wireshark*