【发布时间】:2017-04-14 07:16:03
【问题描述】:
我正在运行tcpdump,使用python 中的subprocess 模块来捕获网站的踪迹,使用这段代码:
import subprocess
from tbselenium.tbdriver import TorBrowserDriver
site = "check.torproject.org"
try:
process = subprocess.Popen(['sudo', 'tcpdump', '-l', '-i', 'eth0', '-w', 'trace.pcap'], stdout=subprocess.PIPE)
with TorBrowserDriver("/path/to/tor-browser_en-US/") as driver:
driver.load_url("https://" + site, wait_on_page=20)
process.send_signal(subprocess.signal.SIGTERM)
except OSError:
print "OSError"
代码给了我一个OSError,当我尝试打开wireshark 中的pcap 文件时,出现以下错误框:
The capture file appears to have been cut short in the middle of a packet.
我已阅读this 解决同一问题的方法,并尝试发送SIGINT 和SIGTERM,但在每种情况下我都收到相同的截断数据包消息以及OSError。我也尝试过使用process.terminate(),但这也不起作用。有什么办法可以让tcpdump 在sudo 模式下运行时干净地退出。谢谢!
【问题讨论】:
-
这不是我很了解的领域,但似乎有一些工具可以修复
pcap文件,例如pcapfix. -
关于 OSError 的细节不多?你能试试
except OSError, e: print e -
@Kadir 它的
OSError: [Errno 1] Operation not permitted -
@MarkSetchell 谢谢,我会调查
pcapfix
标签: python subprocess tcpdump