完全抑制tcpdump的输出

时间:2016-09-29 14:15:12

标签: python linux subprocess tcpdump

我正在写一个通过subprocess.open执行tcpdump的python脚本

现在,我希望这个脚本不向屏幕输出任何内容(stdout),但只是静默运行。我试过这样做:

ps_dump = subprocess.Popen(['tcpdump', '-U', '-w', pcapfile, 'port 53'], stdout=subprocess.PIPE)

但它仍然输出这些:

设备eth0进入混杂模式 tcpdump:监听eth0,链接类型EN10MB(以太网),捕获大小65535字节

捕获0个数据包

过滤器收到的0个数据包

内核丢弃0个数据包

设备eth0离开混杂模式

我想彻底镇压这些。如果我运行脚本,它不应该打印任何东西。 我读过你可以使用> / dev / null在linux中抑制,但我如何在上面的Popen命令中使用它?

有关如何使其发挥作用的任何建议或答案?

1 个答案:

答案 0 :(得分:0)

您可以将文件描述符传递给stdout=参数,只需:

with open(os.devnull, 'w') as nullfd:
    proc = Popen(..., stdout=nullfd)