使用 subprocess.call 读取 pcap 文件时出现文件名太长错误

File Name Too long error while reading a pcap file using subprocess.call

我不熟悉使用子流程调用。请帮助我找出以下脚本中的问题..

我正在尝试编写一个新的 PCAP 文件 (filter1.pcap),该文件将仅包含来自特定 IP 地址 (ipadd) 的数据包,而来自较大 PCAP 文件中包含的来自不同 IP 地址的大量数据包(superset.pcap)

错误是:OSError: [Errno 36] 文件名太长

代码如下:

from subprocess import *
pcapfile = rdpcap("superset.pcap") 
ipadd = "192.168.1.1"              
fileout = "filter1.pcap"           
command = "sudo tcpdump -w %s -r %s src %s" %(fileout,pcapfile,ipadd)
subprocess.call( [command] )

顺便说一句,Linux 中的以下命令工作得很好:

sudo tcpdump -w filter1.pcap -r superset.pcap src 192.168.1.1

任何帮助都会很棒!!

谢谢, CKS

已解决。此处存在逻辑错误。我正在使用 rdpcap 读取完整的 PCAP 文件并将值传递给 tcpdump。所以 tcpdump 正在读取完整的文件本身作为文件名。

我更改了如下代码,现在可以使用了!

import os.path
pcapfile = "superset.pcap"
ipadd = "192.168.1.1"         
fileout = "filter1.pcap"           
command = "sudo tcpdump -w %s -r %s src %s" %(fileout,pcapfile,ipadd)
os.system(command)