【问题标题】:Repeat wireshark commands重复wireshark命令
【发布时间】:2019-06-30 13:06:56
【问题描述】:

有一些wireshark .cap 文件。我需要将所有这些分成 1 秒的时间间隔。 我能够使用下面的 editcap 命令拆分 .cap 文件。 Editcap -i time inputfile.cap outputfileprefix

图1:拆分文件-输出 但是由于我要拆分的文件很多;我必须为每个文件名一个一个地单独使用这个命令。这需要时间。因此,我想编写一个代码来检查给定文件夹中的所有 .cap 文件并拆分所有文件。

例如,当我将路径指定为“/root/Desktop/Testcap/”时,程序也应该拆分子文件夹(如post、shortcomment)中的所有.cap。 输出(拆分文件)应获得输入文件的名称,如图 1 所示。 这是我写的。 导入操作系统 路径 = '/root/Desktop/Testcap' 对于 dir_name、sub_dirs、os.walk(path) 中的文件: 对于文件中的文件名: 如果文件名.endswith('.cap'): os.system('editcap -i 1 文件名.....') 如何从粗体部分完成? 谢谢

【问题讨论】:

  • find /root/path/of/files -name "*.cap" -exec editcap -i {} outputfileprefix \;
  • 谢谢,我输入了这个命令,但没有任何反应。我将时间间隔指定为 -exec editcap -i 1

标签: python


【解决方案1】:

你可以在 python 中做到这一点,但是 find 和 xargs 是学习和使用的好工具:

find /root/Desktop/Testcap -name ‘*.cap’ -print0 | xargs -0 -n1 -I % editcap -i % %

print0 和 -0 用于处理文件名中的空格。

或者,如果你想在 python 中做:

#!/usr/bin/env python
import os
startdir='.'
suffix='.cap'
for root, dirs, files in os.walk(startdir):
  for name in files:
    if name.endswith(suffix):
      filename=os.path.join(root,name)
      cmd = 'editcap -i 1 "{}" "{}"'.format(filename,filename)
      print(cmd)
      os.system(cmd)

【讨论】:

  • -print0 /xargs -0 这里真的不需要。 -exec ... {} ... 不会对参数进行分词。
  • William,这是真的 - 我确实发现 xargs 在许多情况下更灵活,所以它是一个有用的工具。在这种情况下,我相信这就是 Hasara 想要使用的只是 find:find /root/Desktop/Testcap -name ‘*.cap’ -exec editcap -i 1 {} {} \;
  • @dttocs 在您的上述代码中,拆分的 pcap 文件也被写入与原始文件相同的文件夹中。我们可以将拆分文件写入单独的文件夹和子文件夹(与原始文件相同)。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
  • 2018-07-17
  • 2011-11-10
  • 1970-01-01
  • 2016-12-03
  • 2020-06-24
相关资源
最近更新 更多