tcpdump -i eth0 -C 5 -W 1 -w <file name>&
我使用上述命令在 Ubuntu 机器上将数据包捕获到 5MB 的 pcap 文件中。一旦 pcap 文件达到最大大小(5MB),文件就会旋转并从 0KB 重新开始。
我需要知道一旦文件达到最大大小,我们是否可以阻止 tcpdump 旋转文件,并从那时起丢弃数据包。
答案1
如果您有权访问wireshark/tshark:
tshark -i eth0 -a filesize:5000 -w my.pcap &
答案2
我找到了一个方法!!!!
tcpdump
我们可以像下面这样进行 hack
tcpdump -i eth0 -C 5 -W 2 -w my.pcap -z ./stop.sh&
stop.sh
# !/bin/sh
pkill tcpdump
rm my.pcap0
这对我有用……
答案3
看起来 tcpdump (4.9.2) 在与捕获时间 (-G) 一起使用时仅支持文件计数 (-W)。另一种仅捕获到一个文件的方法是通过限制数据包计数 (-c)。 tcpdump 似乎无法写入受大小限制的非旋转文件(-C)。
根据源代码有这个退出语句
if (Cflag == 0 && Wflag > 0 && Gflag_count >= Wflag) {
(void)fprintf(stderr, "Maximum file limit reached: %d\n",
Wflag);
info(1);
exit_tcpdump(0);
/* NOTREACHED */
}
它特别测试 Cflag(文件大小)是否为零。
示例 1:按数据包计数
# tcpdump -vi any -w ./count.pcap -c 42 ip
示例 2:按捕获时间
# tcpdump -vi any -w ./time.pcap -G 7 -W 1 ip
结果:各 1 个文件
# ls
count.pcap time.pcap
华泰