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

时间:2016-10-03 12:19:14

标签: subprocess pcap tcpdump

我是使用子进程调用的新手。请帮我解决下面脚本中的问题..

我正在尝试编写一个新的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

1 个答案:

答案 0 :(得分:0)

这已解决..这里存在逻辑错误。我正在使用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)