2011-03-16 64 views
0

我使用結構在服務器上運行編譯,服務器是Linux,客戶端是Windows,通道是SSH。fabric.api.run將stderr轉換爲標準輸出爲SSH

  1. 在服務器'scons'上打印到stderr的編譯錯誤。沒關係。
  2. 但是,從客戶端執行的fabric.api.run('scons')會將編譯錯誤輸出到STDOUT。這不好,正因爲如此,我的IDE沒有檢測到它們。

回答

0

默認情況下,fabric.api.run結合輸出和錯誤,以相同的流。正如@miku所說,在fabric 1.0中,您可以禁用此行爲設置combine_stderr=False。備選地,只是stderr重定向到/ dev/null的

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

只有在織物1.0 – grep 2011-03-16 08:08:51

+0

修復程序後[52b41ff01ca352a9d63b76946d1f20a61cc3ecae](https://github.com/vvavrychuk/fabric/commit/52b41ff01ca352a9d63b76946d1f20a61cc3ecae)這個參數生效。 但我仍然調試,直到面料/ paramiko,直到我看到沒有MSG_CHANNEL_EXTENDED_DATA消息從服務器應該承載stderr。只有MSG_CHANNEL_DATA包含stdout和stderr。 我懷疑這是OpenSSH服務器問題。你能幫忙嗎? – 2011-03-16 20:19:52