我是linux的新用户,现在我的任务是在特定时间捕获数据包。
例如,我要捕获数据包,然后将其保存到pcap文件(每个文件限制为50mb)。我可以使用以下命令:
tcpdump -C 50 -w mypackets.pcap
但是我不知道如何在特定时间段内运行它。 例如,在每个星期一至星期五运行此程序(周期为2019/02/01〜2019/02/28) 在2019/02/28之后,此过程将被终止。
我已阅读the doc,但似乎没有参数可以控制此选项
有什么好主意吗?
答案 0 :(得分:1)
如果您希望安排进程运行的时间,那么您可能需要调查crontab。
例如,以下cron作业将导致tcpdump
在每个星期一开始,并在每个星期五终止:
$ crontab -e o 0 0 * * mon tcpdump -C 50 -w mypackets.pcap 0 0 * * sat killall -s SIGINT tcpdump ESC:wq crontab: installing new crontab
或者,如果您只想捕获整个月(例如3月),则可以改用这样的方法:
$ crontab -e o 0 0 1 mar * tcpdump -C 50 -w mypackets.pcap 0 0 1 apr * killall -s SIGINT tcpdump ESC:wq crontab: installing new crontab
不再需要cron作业时,您将需要手动删除它们。一定要在实际运行cron作业之前对其进行测试,以便您知道它们在真正需要它们时会按预期工作。
您可能还想研究使用dumpcap
而不是tcpdump
,因为dumpcap
允许您指定使用-在指定的秒数后停止捕获。一个duration:value 选项,因此您不必显式停止它,因为它会在经过这段时间后终止。