【发布时间】:2016-10-05 13:30:48
【问题描述】:
我不熟悉使用子进程调用。请帮助我找出以下脚本中的问题..
我正在尝试编写一个新的 PCAP 文件 (filter1.pcap),该文件将仅包含来自特定 IP 地址 (ipadd) 的数据包,这些数据包来自来自较大 PCAP 文件 (superset.pcap) 中包含的各种 IP 地址的大量数据包)
错误是:OSError: [Errno 36] File name too long
代码如下:
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
任何帮助都会很棒!
谢谢, CK
【问题讨论】:
-
尝试将 pcapfile = rdpcap("superset.pcap") 更改为 pcap = "superset.pcap" 看起来你是先用 scapy 打开文件,然后将输出提供给 tcpdump,它会失败。
-
谢谢杰夫。是的,这就是问题!
标签: subprocess pcap tcpdump