用于重复 tshark 命令并每分钟更改输出文件名的脚本

用于重复 tshark 命令并每分钟更改输出文件名的脚本

我对 Unix 有点陌生,想请求快速代码,我可以用它每 60 秒重复一次 tshark 命令,

我想运行的命令是这样的:

 tshark -z io,stat,1,tcp.port==80,tcp.port==443 -a duration:60  > filename.txt

我需要将此命令放入一个循环中,每 60 秒重新运行一次,每次更改输出文件名时,最好使用时间和日期来命名文件,或者更容易使用数字步进计数器来命名文件。

有什么建议 ?

谢谢

答案1

由于您发布的命令已经需要大约 60 秒才能运行,因此也许可以执行以下操作:

while true; do tshark ... > "tshark-$(date +%F-%T).txt"; done

这将产生诸如tshark-2017-02-16-11:44:22.txt.

答案2

请注意,如果您在循环中重复该命令,您将错过一个 tshark 关闭和下一个 tshark 启动并准备捕获数据包之间传输的数据包。

也许更好的方法是使用dumpcap一次并告诉它每分钟生成一个新文件。然后,在需要时从这些转储中获取统计信息。使用原始转储文件,您可以从中获取所有可能的信息。

就像是:

dumpcap -b duration:60 -w dump.pcap

这将创建名为dump_00002_20170224130408.pcap.

然后根据需要获取统计信息:

tshark -z io,stat,1,tcp.port==80,tcp.port==443 -r dump_00002_20170224130408.pcap

相关内容