【问题标题】:Prevent Paramiko from printing to console防止 Paramiko 打印到控制台
【发布时间】:2020-01-04 04:15:12
【问题描述】:

当我连接 Paramiko 客户端时,我得到了不需要的输出:

已连接(2.0 版,客户端 OpenSSH_7.2p2)
身份验证(公钥)失败。
身份验证(公钥)失败。
认证(密码)成功!

我尝试按照this question 中的建议抑制标准输出,但它不起作用:

sys.stdout = open(os.devnull, "w")
print("AAAAAAAAAAAaaaaaaaaaaaaaaaaa")        
my_client.connect(hostname=hostname, username=username, password=password)
sys.stdout = sys.__stdout__

“AAAAAAAAAAAAaaaaaaaaaaaaaaaaaaa”没有出现,但 Paramiko 的输出仍然出现。如何阻止 Paramiko 的信息打印到控制台?

【问题讨论】:

  • 如果程序重视 POSIX 规则,它会将消息写入stderr 而不是stdout
  • 即使是第一个“已连接”行和最后一个“成功!”行吗?
  • 用户要阅读的内容转到stderr。什么是输出数据转到stdout。对这些进行分类并不总是那么容易,但你的信息相当清楚。

标签: python python-3.x ssh stdout paramiko


【解决方案1】:

Paramiko 不会自行将任何内容打印到控制台。

Paramiko 将这些消息发送到记录器 (logging module)。如果它们最终出现在控制台上,则必须配置一个将日志消息发送到控制台的记录器。

【讨论】:

    猜你喜欢
    • 2020-03-17
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多