每分钟写入另一个 tcpdump 文件

Write to another tcpdump file every minute

我想使用 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

来自tcpdump man page:

<strong>-G</strong> rotate_seconds 如果指定,则每 rotate_seconds 秒轮换使用 <strong>-w</strong> 选项指定的转储文件。保存文件的名称由 <strong>-w</strong> 指定,其中应包含 <strong>strftime</strong>(3) 定义的时间格式。如果没有指定时间格式,每个新文件将覆盖以前的文件。如果与 <strong>-C</strong> 选项一起使用,文件名将采用 '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 文件,则可以省略偏移量,但它可能很有用,因此您可能仍想保留它。您永远不知道将来什么时候您可能想与跨时区的同事共享 pcaps,如果他们打开您的 pcap 文件,他们将获得所需的信息,以便通过 Wireshark 的 Edit 轻松时移数据包时间戳-> Time Shift ... 功能,因此数据包时间戳是相对于捕获文件所在的时区而不是它们自己的时区。这样,每个人都在引用相同的时间,而不管他们自己的时区,可以避免混淆。