python subprocess.popen tshark可用于某些参数,但不能用于其他参数
当我使用以下命令执行python脚本时:python subprocess.popen tshark可用于某些参数,但不能用于其他参数,python,subprocess,tshark,Python,Subprocess,Tshark,当我使用以下命令执行python脚本时: tsharkCall = ["tshark", "-a", "duration:6", "-i", "2", "-w", "thsark.pcap"] tsharkProc = subprocess.Popen(tsharkCall, bufsize=0, executable="C:\\Program Files\\Wireshark\\tshark.exe") 包含预期内容的pcap文件将正式显示在与脚本相同的文件夹中 从pcap创建文本文件的第二
tsharkCall = ["tshark", "-a", "duration:6", "-i", "2", "-w", "thsark.pcap"]
tsharkProc = subprocess.Popen(tsharkCall, bufsize=0, executable="C:\\Program Files\\Wireshark\\tshark.exe")
包含预期内容的pcap文件将正式显示在与脚本相同的文件夹中
从pcap创建文本文件的第二个过程不起作用:
tsharkCall = ["tshark", "-i", "-", "<", "tshark.pcap", ">", "tshark.txt", "-V"]
tsharkProc = subprocess.Popen(tsharkCall, bufsize=0, executable="C:\\Program Files\\Wireshark\\tshark.exe")
tsharkCall=[“tshark”、“-i”、“-”、“”、“tshark.txt”、“-V”]
tsharkProc=subprocess.Popen(tsharkCall,bufsize=0,executable=“C:\\Program Files\\Wireshark\\tshark.exe”)
我在cmd窗口中看到“捕获标准输入”,但没有“捕获x数据包”,文件夹中也没有出现tshark.txt文件
在同一位置的命令提示符下,这完成了我希望从脚本中得到的工作:
>"C:\Program Files\Wireshark\tshark.exe" -i - < "tshark.pcap" > "tshark.txt" -V
“C:\Program Files\Wireshark\tshark.exe”-i-<“tshark.pcap”>“tshark.txt”-V
一个电话有效,另一个电话无效,这似乎很奇怪。关于我遗漏了什么,有什么想法吗?
subprocess.Popen
默认情况下绕过CMD.EXE
/sh
,因此命令行I/O重定向(
)将不起作用。您可以获得类似的效果,如下所示:
tsharkCall = ["tshark", "-i", "-", "-V"]
tsharkIn = open("tshark.pcap", "rb")
tsharkOut = open("tshark.txt", "wb")
tsharkProc = subprocess.Popen(tsharkCall,
stdin=tsharkIn,
stdout=tsharkOut,
executable="C:\\Program Files\\Wireshark\\tshark.exe")
subprocess.Popen
默认情况下绕过CMD.EXE
/sh
,因此命令行I/O重定向(
)将无法工作。您可以获得类似的效果,如下所示:
tsharkCall = ["tshark", "-i", "-", "-V"]
tsharkIn = open("tshark.pcap", "rb")
tsharkOut = open("tshark.txt", "wb")
tsharkProc = subprocess.Popen(tsharkCall,
stdin=tsharkIn,
stdout=tsharkOut,
executable="C:\\Program Files\\Wireshark\\tshark.exe")
这同样有效
tsharkCall = ["C:\\Program Files\\Wireshark\\tshark.exe", "-P", "-V", "-x", "-r", "C:\\Data\\PCAP_TEST_FILES\\test.pcap"]
tsharkOut = open("tshark.txt", "wb")
tsharkProc = subprocess.call(tsharkCall, stdout=tsharkOut)
这同样有效
tsharkCall = ["C:\\Program Files\\Wireshark\\tshark.exe", "-P", "-V", "-x", "-r", "C:\\Data\\PCAP_TEST_FILES\\test.pcap"]
tsharkOut = open("tshark.txt", "wb")
tsharkProc = subprocess.call(tsharkCall, stdout=tsharkOut)
非常感谢。我发现“-”必须紧跟在“-I”之后,但除此之外,这正是我需要知道的。@rlaining-Hmph,tshark当时没有遵守适当的惯例。我已经调整了答案,谢谢!我发现“-”必须紧跟在“-I”之后,但除此之外,这正是我需要知道的。@rlaining-Hmph,tshark当时没有遵守适当的惯例。我已经调整了答案。