如何安排tcpdump在特定时间段内运行?

问题描述 投票:33回答:4

每次,当我手动运行tcpdump时,都必须使用Ctrl + C停止它。现在,我想使用cronjob安排我的tcpdump,而我只需要它运行1个半小时即可。如果不手动运行Ctrl + C或kill命令,如何自动将其停止?这是我正在测试的命令:

tcpdump -i eth0 'port 8080' -w  myfile

我可以安排另一个cronjob杀死tcpdump进程,但这似乎不是一个好主意。

linux tcpdump
4个回答
53
投票

您可以结合使用-G {sec}(每x秒旋转转储文件)和-W {count}(转储文件的限制数量)来获得所需的内容:

tcpdump -G 15 -W 1 -w myfile -i eth0 'port 8080'

将运行15秒,然后停止。将1.5小时变成几秒钟,它应该可以工作。


37
投票

您可以使用超时

timeout 5400 tcpdump -i eth0 'port 8080' -w myfile

17
投票

您可以这样做:

tcpdump -i eth0 'port 8080' -w  myfile & 
pid=$!
sleep 1.5h
kill $pid

4
投票

在Ubuntu 14.04上最适合我的方法

sudo -i
crontab -e

然后添加行

30 17 * * * /usr/sbin/tcpdump -G 12600 -W 1 -s 3000 -w /home/ubuntu/capture-file.pcap port 5060 or portrange 10000-35000

注意

  • -G标志表示转储运行的秒数,此示例每天从5:30 PM到9:00 PM运行>
  • -W是tcpdump将执行的迭代次数
  • 在保存并退出文件之前,不会添加Cron作业
  • 此示例用于捕获Asterisk电话服务器的数据包
© www.soinside.com 2019 - 2024. All rights reserved.