使用fabric时,我有时会从apt,git等程序中获得这样的输出:
[tfb@192.168.59.103:49369] out: Receiving objects: 6% (3318/55289)
[tfb@192.168.59.103:49369] out: Receiving objects: 7% (3871/55289)
[tfb@192.168.59.103:49369] out: Receiving objects: 8% (4424/55289)
[tfb@192.168.59.103:49369] out: Receiving objects: 9% (4977/55289)
[tfb@192.168.59.103:49369] out: Receiving objects: 10% (5529/55289)
[tfb@192.168.59.103:49369] out: Receiving objects: 11% (6082/55289)
[tfb@192.168.59.103:49369] out: Receiving objects: 12% (6635/55289)
[tfb@192.168.59.103:49369] out: Receiving objects: 13% (7188/55289)
我怀疑这与没有正确支持回车的终端类型有关。两个问题:
使用Fabric时可以阻止这种情况发生吗?
用于讨论终端需要支持以避免此问题的功能的术语是什么?例如。为什么会发生这种情况
答案 0 :(得分:1)
通过FreeNode上的#fabric
redkrieg:这不是回车,你的申请正在发送 对终端的更新。如果你有些应用程序不会这样做 禁用pty,其他人不关心他们的环境并试图弄乱 无论你的屏幕如何。如果可能的话,寻找“批处理模式” 在程序中键入选项或抑制结构中的输出。
这是有道理的,因为Fabric的默认功能集声称通过线路缓冲正确支持回车。只是禁用pty似乎解决了问题,例如
run('git clone foo ~/foo', pty=False)
解决了git的问题,以及类似的apt和大多数其他主要违法者。有趣的是,当远程用户是root用户时,这可能不是问题,因为它拒绝创建PTY,而不是因为root使用的PTY具有一些特殊属性
答案 1 :(得分:0)
尝试使用以下行
import fabric
from fabric.api import env
fabric.state.output['running'] = False
env.output_prefix = False