![用于重复 tshark 命令并每分钟更改输出文件名的脚本](https://linux22.com/image/105698/%E7%94%A8%E4%BA%8E%E9%87%8D%E5%A4%8D%20tshark%20%E5%91%BD%E4%BB%A4%E5%B9%B6%E6%AF%8F%E5%88%86%E9%92%9F%E6%9B%B4%E6%94%B9%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6%E5%90%8D%E7%9A%84%E8%84%9A%E6%9C%AC.png)
我对 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