提示输入密码时出现Fabric任务错误

时间:2011-10-11 21:39:04

标签: python fabric paramiko

我遇到了一个我似乎无法过去的错误。我有一个简单的结构任务,必须作为远程系统上的不同用户运行,例如:

def update():
    env.user = 'otheruser'
    #~ env.password = 'otherpass'  # this works, but I don't want it here.
    with cd(env.sitefolder):
        run('hg pull -u')

如果我用env.password硬编码运行它,它可以工作。如果我使用fab -p otherpass update它也有效。如果我省略它the docs说我会得到提示。这是事实,但它不起作用。每次输入密码后我都会收到此错误:

> fab dev update
[darkstar] Executing task 'update'
[darkstar] run: hg pull -u
[darkstar] Login password: 
ERROR:paramiko.transport:Exception: Error reading SSH protocol banner
...
Fatal error: Error reading SSH protocol banner

Aborting.

在Ubuntu Natty上使用fabric 1.2.2。我也尝试了env.no_keys选项,但它没有改变任何东西。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

自己提示输入密码!

def update():
    env.user = 'otheruser'
    env.password = getpass.getpass('Enter password: ')
    with cd(env.sitefolder):
        run('hg pull -u')

getpass是标准库的一部分,它只是一个raw_input,它不会回显您键入的内容

答案 1 :(得分:1)

如果目标内存/磁盘空间不足,也会发生这种情况。重新启动和/或解决内存/磁盘空间问题可以解决这个问题。