问题描述
我正在寻找一些解决方案以在捕获到指定大小后停止捕获tcpdump数据包。我正在使用以下命令来实现这一目标,但看起来tcpdump并未将所有捕获的数据包都写入指定的文件(myfile .pcap)。
sudo tcpdump -i en0 -C 10 -W 1 -z ./stop-tcpdump.sh -w myfile.pcap -K -n
cat stop-tcpdump.sh
#!/bin/sh
TCP_EXECUTABLE="tcpdump"
pid=$(pidof ${TCP_EXECUTABLE})
sudo kill -2 $pid
解决方法
tcpdump
的最简单解决方案可能只是将-W 1
增加到-W 2
。这将导致开始写入第二个捕获文件,但是10MB的第一个文件将保持完整而不是被截断,因为tcpdump
实例不一定会由于计时问题而被杀死。
或者,您可以切换为使用dumpcap
或tshark
,它们都支持显式的-a filesize:value
选项,因此不需要后旋转终止脚本。请注意,与tcpdump
的{{1}}选项不同,此选项期望以kB而不是MB为单位的值。