我正在使用 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')
但两者都不起作用。
有没有办法让它停止显示为控制台输出?
最佳答案
这是 paramiko==2.4.2
中仍然存在的问题;显然已经安排好了for the next 2.x release ,很可能为 2.5。
他们所说的问题本质上是“旧的paramiko
,新的密码学
”
同时,您可以尝试以下方法来修复它:
pip uninstall cryptography ; pip install cryptography==$DESIRED_VERSION
将 $DESIRED_VERSION
替换为 the version you need 。 paramiko 2.4.2 于 2018 年 9 月发布,看起来兼容的最新版本是 cryptography 2.3.1。在我的设置中,它有效。
这本质上意味着降级您的加密包,因此在执行此操作之前请三思。
关于python - 抑制 Paramiko stderr 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52671002/