抑制Paramiko stderr输出

时间:2018-10-05 17:56:33

标签: python logging paramiko

我将paramiko用作python脚本的一部分。在此脚本中,我还使用python的日志记录模块记录日志文件和stderr。只有我通过logger.debug,logger.info等指定的内容才能显示在控制台中。不幸的是,当我如下向paramiko打电话时:

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, port=port, username=user, key_filename=keyfile)

以下消息输出到stderr:

CryptographyDeprecationWarning:已弃用签名者和验证者。请使用签名并验证。

我试图通过将paramiko的日志记录更改为CRITICAL来抑制这种情况:

logging.getLogger("paramiko").setLevel(logging.CRITICAL)

将其定向到这样的文件中:

paramiko.util.log_to_file('filename.log')

但都不行。

有没有办法使此停止显示为控制台输出?

1 个答案:

答案 0 :(得分:3)

paramiko==2.4.2仍然存在此问题;显然是for the next 2.x release的预定时间,因此很可能是2.5。

他们指出的问题本质上是“旧paramiko,新cryptography

与此同时,您可以尝试通过以下方法对其进行修复:

pip uninstall cryptography ; pip install cryptography==$DESIRED_VERSION

$DESIRED_VERSION替换为the version you need。 paramiko 2.4.2于2018年9月发布,看起来兼容的最新版本是加密2.3.1。在我的设置中,它可以正常工作。

这实质上意味着降级您的加密程序包,因此请三思而后行。