python - 抑制 Paramiko stderr 输出

标签 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')

但两者都不起作用。

有没有办法让它停止显示为控制台输出?

最佳答案

这是 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/

相关文章:

c# - 有人知道为什么我无法在 C# 中以编程方式访问 winevt 文件夹吗?

spring - 如何使用 logback.xml 在 spring 中设置特定类的日志级别?

python - 如何在python日志记录中创建每日日志文件夹

python - Paramiko exec_command,超时不起作用

python - 检查排列是否存在/组合是否唯一

python - 如何在Python中的类中而不是类之外声明函数

python - 使用 Google Colab 删除 Google Drive 上的文件

python - DRF 上传多个文件

python - 通过 paramiko 加载 .bashrc 的 ssh

python - Paramiko exec_command 的实时输出