python - 导入模块时抑制 scapy 警告消息

标签 python hide stderr scapy output

我正在编写一个小脚本,它使用 scapy 收集一些信息,然后返回一些 xml 代码,我将把这些代码传递给 metasploit 的 xmlrpc 接口(interface)。我希望我的脚本只返回 xml,没有额外的警告等。

我可以通过在我的 sr1 命令中添加选项 verbose=0 来抑制大多数 scapy 输出。在每次输出之前我仍然得到的是:

WARNING: No route found for IPv6 destination :: (no default route?)

通过像这样调用我的脚本,我可以轻松地重定向该输出:

 ./myscript 2> /dev/null

但我想将其合并到脚本中。为此,我找到了一个提示,可以有一个 NullDevice 类,它不写任何东西,然后将 sys.stderr 设置为该 NullDevice 类的实例。

不幸的是,这只在我已经加载模块后才有效,所以我仍然有警告,并且它只会重定向发送到 stderr 的任何后续消息。

如何禁止该警告消息出现在我的屏幕上?

最佳答案

您可以通过添加以下内容来摆脱 scapy 的警告:

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

导入 Scapy 之前。这将抑制所有严重程度低于错误消息的消息。


例如:

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *
...

关于python - 导入模块时抑制 scapy 警告消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13249341/

相关文章:

Android:在线性布局之上放置一些东西

javascript - 关闭灯箱后模态窗口覆盖仍然存在

permissions - 如何对特定用户或 channel 隐藏斜线命令 Discord.js v13

c++ - 从父级重定向时,到 stderr 的 DLL 输出不起作用

python - 将顶级窗口锚定到根窗口,python 2.7 - windows 7

python - 为什么在显式关闭 stdout 时会出现 ValueError?

python - 如何使用 category_encoder 包获取二进制编码的原始值

java - 使用 Apache Commons Exec 时如何分别收集标准输出和标准错误?

php - 捕获/抑制来自 php exec 的所有输出,包括 stderr

python线程不会死