我正在编写一个小脚本,它使用 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/