我正在尝试开发一个脚本来读取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
答案 0 :(得分: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]
请注意第3个参数周围的单引号以保留命令行参数中的引号。
这样就不需要拆分并保留文件名中的空格。