每分钟写入另一个tcpdump文件

时间:2018-07-08 12:09:19

标签: linux command command-line-interface tcpdump

我想使用 tcpdump 为网络创建日志文件。 我可以使用包含分钟的文件名来写输出文件。

注意:我不想按文件大小创建文件。我想每分钟创建文件。

我尝试了很多命令,但是我做不到。

# log_{DAY}_{MOUNTH}_{YEAR}__{HOUR}_{MINUTE}.pcap

log_08-07_2018__12_34.pcap
log_08-07_2018__12_35.pcap
log_08-07_2018__12_36.pcap
log_08-07_2018__12_37.pcap

1 个答案:

答案 0 :(得分:1)

来自tcpdump man page

-G rotate_seconds If specified, rotates the dump file specified with the -w option every rotate_seconds seconds. Savefiles will have the name specified by -w which should include a time format as defined by strftime(3). If no time format is specified, each new file will overwrite the previous. If used in conjunction with the -C option, filenames will take the form of 'file count'.

查看strftime man page,您会发现以指定格式创建文件所需的所有记录的转换说明符。

使用来自各个手册页的信息,以下命令应每分钟生成pcap文件,这些文件将根据您指定的格式进行命名:

tcpdump -i eth0 -G 60 -w 'log_%d-%m_%Y__%H_%M.pcap'

我可能会建议使用其他命名约定吗?您选择的格式不能很好地排序,并且时钟会随着时间而漂移,尤其是对于长时间运行的捕获文件而言;因此,我建议使用ISO 8601格式。例如:

tcpdump -i eth0 -G 60 -w 'log_%Y-%m-%dT%H_%M-04:00.pcap'

...或更简单:

tcpdump -i eth0 -G 60 -w 'log_%FT%T-04:00.pcap'

注意 -04:00恰好是我所在时区与UTC的当前偏移量。如果您不与其他时区的同事共享pcap文件,则可以省略该偏移量,但是它很有用,因此无论如何您都希望保留它。您永远都不知道将来何时会与同事共享pcap,并且如果他们打开您的pcap文件,他们将获得通过Wireshark的 Edit->轻松时移数据包时间戳所需的信息。 Time Shift ... 功能使数据包时间戳相对于捕获文件所在的时区而不是它们自己的时区。这样,每个人都在引用相同的时间,而不管他们自己的时区如何,可以避免混乱。