【问题标题】:Suppressing the output of tcpdump completely [duplicate]完全抑制 tcpdump 的输出[重复]
【发布时间】:2016-09-29 14:15:12
【问题描述】:

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

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

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

但它仍然输出这些:


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

0 个数据包被捕获

过滤器收到0个数据包

内核丢弃了0个数据包

设备 eth0 离开混杂模式


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

关于如何让它发挥作用的任何建议或答案?

【问题讨论】:

标签: python linux subprocess tcpdump


【解决方案1】:

您可以将文件描述符传递给stdout= 参数,很简单:

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

【讨论】:

  • 嗯,好像不行……我在问这个问题之前试过了
  • @vinwin 它可以在我的计算机上使用ls 之类的命令运行。你确定tcpdump 没有输出到标准错误?
猜你喜欢
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 2016-12-30
相关资源
最近更新 更多