0

我正在尝试开发一个脚本来读取 pcap 文件并从中提取一些字段,但使用 tshark 作为子进程。但是我收到有关 cmd 的语法错误。谁能帮我解决这个问题?

def srcDestDport (filename):
  cmd = r"tshark -o column.format:"Source","%s", "Destination","%d", "dstport"," %uD"' -r %s"%(filename)
  subcmd = cmd.split(' ')
  lines = subprocess.Popen(subcmd,stdout=subprocess.PIPE)
  return lines
4

1 回答 1

2

就 Python 而言,您的定义中似乎缺少一些逗号cmd

cmd = r"tshark -o column.format:"Source","%s", "Destination","%d", "dstport"," %uD"' -r %s"%(filename)
#              -- no comma here -^                              ----^  ----^     --^

因为第一个字符串在遇到第一个字符串时结束;原始字符串不会阻止您转义嵌入的引号。""Source"

如果您想生成参数列表,只需直接将其设为列表,也可以省去插入文件名:

cmd = ["tshark", "-o", 
       'column.format:"Source","%s","Destination","%d","dstport"," %uD"',
       "-r", filename]

注意第三个参数周围的单引号以保留命令行参数中的引号。

这也消除了拆分的需要,并在文件名中保留了空格。

于 2013-10-04T10:24:53.503 回答