我对 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