And*_*rew 19 linux unix tcpdump macos
我希望能够捕获循环的 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
Run Code Online (Sandbox Code Playgroud)
Mar*_*iae 19
那是因为你写的-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 count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ] [ -I interface ] [ -m module ] [ -M secret ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -E spi@ipaddr algo:secret,... ] [ -y 数据链接类型 ] [ -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
Run Code Online (Sandbox Code Playgroud)
这将循环旋转文件(名称为 trace1、trace2、...),周期为 48,每 1800 秒(=30 分钟)或每 100?MB,以先到者为准。
小智 7
扩展flabdablet 的答案
(更改-G 1800
为-G 300
– 每五分钟轮换一次 – 仅用于测试目的),
tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300
Run Code Online (Sandbox Code Playgroud)
会给你%m=month
, %d=day of month
, %H=hour of day
, %M=minute of day
, %S=second of day
, %s=millisecond of day
, 导致
/var/temp/trace-03-02-08-30-56-1520002568
/var/temp/trace-03-02-08-35-56-1520002568
/var/temp/trace-03-02-08-40-56-1520002568
Run Code Online (Sandbox Code Playgroud)
对于为那些讨厌的间歇性问题组织跟踪非常有用。另外,如果你不是 root,你可能想要sudo
并且当然使它成为一个 nohup:
sudo bash -c "nohup tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300 &"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
77370 次 |
最近记录: |