【问题标题】:fabric.api.run converts stderr to stdout for SSHfabric.api.run 将 stderr 转换为 SSH 的 stdout
【发布时间】:2011-03-16 16:10:10
【问题描述】:

我使用fabric在serve上运行编译,服务器是Linux,客户端是Windows,通道是SSH。

  1. 在服务器“scons”上将编译错误打印到标准错误。没关系。
  2. 但是从客户端执行的 fabric.api.run('scons') 会将编译错误打印到 STDOUT。这不好,因此我的 IDE 无法检测到它们。

【问题讨论】:

    标签: python ssh fabric


    【解决方案1】:

    【讨论】:

    • 修复52b41ff01ca352a9d63b76946d1f20a61cc3ecae后该参数生效。但是我仍然一直调试到fabric/paramiko,直到我看到没有来自服务器的MSG_CHANNEL_EXTENDED_DATA 消息应该携带stderr。 stdout、stderr 只有 MSG_CHANNEL_DATA。我怀疑这是 OpenSSH 服务器问题。你能帮忙吗?
    【解决方案2】:

    默认情况下,fabric.api.run 将 stdout 和 stderr 组合到同一个流中。正如@miku 所说,在fabric 1.0 中,您可以禁用此行为设置combine_stderr=False。或者,只需将 stderr 重定向到 /dev/null

    run('scons 2>/dev/null')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      • 2014-07-22
      • 2022-01-18
      相关资源
      最近更新 更多