【发布时间】:2015-01-14 01:09:05
【问题描述】:
我正在使用 python 运行 tcpdump 以捕获来自我的手机的一些探测请求。 现在,我只是将它打印到控制台。
def dumpNexus(self):
proc = subprocess.Popen(["sudo", "tcpdump", "-i", "mon.wlan0", "-e", "-s", "0", "type", "mgt", "subtype", "probe-req", "and", "ether host", "bc:f5:ac:f2:xx:xx"], stdout=subprocess.PIPE,)
for line in iter(proc.stdout.readline,''):
print proc.stdout.readline()
我的问题是,当我运行这个程序时,它不会打印出 tcpdump 正在写入的所有行。
如果我运行tcpdump 命令并将其输出与 python 程序进行比较,则 python 程序显示的数据包要少得多。
tcpdump 将声明它捕获了 28 个数据包,但只有 11 个通过子进程 stdout 输出。
任何想法为什么会发生这种情况?
谢谢
【问题讨论】:
-
你给
readline()打了两次电话,你期待什么?
标签: python subprocess stdout tcpdump