python fabric不允许我将输出管道输出到更少?

时间:2011-08-07 21:51:52

标签: python fabric

我第一次设置布料,并且无法将布料的输出布线到更少。例如,如果我运行:

fabric deploy |less

(部署是我的部署功能)

我从结构中收到以下错误:

IOError: [Errno 22] Invalid argument

这来自远程主机上的run()命令。

如果我将pty=False添加到run()参数,它就可以了。但是,这意味着每个运行命令,我需要添加此参数。更不用说了,我相信它会对提示和输入数据产生影响(显然对于那些我不会减少管道的情况)。

我该如何解决这个问题?我应该为所有事情做tty=false吗?

1 个答案:

答案 0 :(得分:2)

为了供将来参考,我通过对operations.py应用补丁解决了这个问题,如下所示:

http://code.fabfile.org/attachments/56/operations.patch

否则,重现此问题的代码如下:

from __future__ import with_statement
from fabric.api import *
from fabric.contrib.console import confirm
import re
import sys

def test():
    run('ls')

如果您执行以下命令,则会出现问题:

  

fab -H myhost test | less

希望这可以帮助某些人...我仍然不明白为什么这个旧版本的错误仍然未在最新版本的版本中修补过。

-Dustin