fabric.api.run 将 stderr 转换为 stdout 的 SSH

0 投票
2 回答
1803 浏览
提问于 2025-04-16 13:48

我在使用fabric进行编译时,服务器是Linux系统,客户端是Windows系统,连接方式是SSH。

  1. 在服务器上,'scons'会把编译错误打印到错误输出(stderr)上。这是可以接受的。
  2. 但是,当我从客户端执行fabric.api.run('scons')时,编译错误却打印到了标准输出(STDOUT)上。这就不好了,因为这样我的IDE(集成开发环境)无法检测到这些错误。

2 个回答

1

你可以使用 combine_stderr=False(至少在1.0版本中是这样)。

另外,看看这些链接:

0

默认情况下,fabric.api.run 会把标准输出(正常信息)和错误输出(错误信息)合并到一起。正如@miku所说,在fabric 1.0版本中,你可以通过设置 combine_stderr=False 来关闭这种合并的行为。或者,你也可以把错误输出重定向到一个叫做 /dev/null 的地方,这样就不会显示错误信息了。

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

撰写回答