基于 tcpdump 的数据记录器

基于 tcpdump 的数据记录器

我正在用树莓派构建一个数据记录器。我在 rc.local 中使用了 Shell 脚本,我使用 tcpdump 捕获字节。我面临的问题是每次 pi 启动时日志文件都会被替换。有没有一种方法可以在每次 pi 启动时以不同的名称保存日志文件。

我在 rc.local 中的初始代码

tcpdump udp -c 600 -w new-$(date +%F-%H-%M-%S).pcap  //this writes all the 600 UDP Frames of Ethernet to the file new(time displayed in PI).pcap

我已尝试附加数据,但我想在每次 pi 启动时保存日志文件。由于没有 RTC,数据有点难以纠正。我想在每次 PI 启动时以不同的名称保存该文件。是否可以这样做。

答案1

可以用编号的日志文件代替吗?您可以创建一个包含日志编号的文本文件,lognum以及一个开始记录的小脚本:

#!/bin/bash
lognum=$(cat lognum)
tcpdump udp -c 600 -w log-$lognum.pcap
echo $(( $lognum + 1 )) > lognum

这样你的日志就会被编号,下一个日志的编号将存储在lognum.我建议将1000其作为初始值,以便按字母顺序排序正确地对日志进行排序。

答案2

可能的解决方案:

1) 有互联网连接

当 rc.local 运行时,您应该已经启动了网络接口。最好安装 ntpd 守护进程来跟上时间。

做一个

sudo install ntp

下次重新启动时,它会将时间设置为运行 tcpdump 之前的时间。

2)在阿里巴巴/速卖通购买RT​​C时钟。它相当便宜且易于使用。

http://www.aliexpress.com/item/DIY-DS3231-Precision-RTC-Clock-Memory-Module-for-Arduino-Raspberry-Pi/32436430982.html

3) 使用 mktemp 为 shell 生成一个随机名称,该名称将在旋转文件后更改。

相关内容