我希望能够捕获旋转的tcpdump输出,该输出可以周期性地将价值30分钟的数据捕获到48个文件中。
手册页暗示这应该可行,但是我的测试似乎无法产生我想要的结果:
-W
与该
-C
选项结合使用 ,这会将创建的文件数限制为指定的数量,并从头开始覆盖文件,从而创建“旋转”缓冲区。此外,它将使用足够的前导0命名文件,以支持最大数量的文件,从而使它们能够正确排序。与该
-G
选项结合使用,这将限制所创建的旋转转储文件的数量,达到限制时以状态0退出。如果还与一起使用-C
,则该行为将导致每个时间片产生周期性文件。
我正在OS X 10.9.5 / 10.10.3客户端上运行此程序。这是测试命令;它只是在第三个文件之后退出:
tcpdump -i en0 -w /var/tmp/trace-%Y-%M-%d_%H.%M.%S.pcap -W 3 -G 3 -C -K -n
那是因为您写的-W 3
不是-W 48
。但是,您的命令中还有其他错误。
该选项-G
表示:
-G rotate_seconds
如果指定,则
-w
每隔rotate_seconds秒旋转一次用选项指定的转储文件。保存文件将具有指定的名称,-w
该名称应包含strftime(3)定义的时间格式。如果未指定时间格式,则每个新文件都将覆盖前一个文件。如果与该
-C
选项结合使用,则文件名将采用' file <count>'的形式。
自从您写完-G 3
,您将每3秒钟旋转一次,
...可捕获30分钟的数据
同样,命名方案是错误的:从上面来看,
如果与该
-C
选项结合使用,则文件名将采用' file <count>'的形式。
因此,没有必要为名称指定时间格式。
此外,该-C
选项没有参数,而根据手册页,它应该:
tcpdump的[ -AdDefIKlLnNOpqRStuUvxX ] [ -B BUFFER_SIZE ] [ -c 计数 ]
[ -C FILE_SIZE ] [ -G rotate_seconds ] [ -F 文件 ] [ -I 接口 ] [ -m 模块 ] [ -M 秘密 ] [ -r 文件 ] [ -s snaplen ] [ -T 类型 ] [ -w 文件 ] [ -W filecount ] [ -E spi @ ipaddr algo:secret,... ] [ -y datalinktype ] [ -z postrotate-command ] [ -Z 用户 ] [ 表达式 ]
该手册页指出:
-C
在将原始数据包写入保存文件之前,请检查文件当前是否大于file_size,如果是,则关闭当前的保存文件并打开一个新文件。第一个保存文件之后的保存文件将具有用该
-w
标志指定的名称,其后带有一个数字,从1开始并一直向上。file_size的单位是数百万个字节(1,000,000字节,而不是1,048,576字节)。
因此,您应该指定-C 100
以产生100 MB的文件。
最后,您的命令应为:
tcpdump -i en0 -w /var/tmp/trace -W 48 -G 1800 -C 100 -K -n
这将每隔1800秒(= 30分钟)或每100 MB(以先到者为准)以周期48周期性地循环旋转文件(名称为trace1,trace2,...)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句