我遇到了一个我似乎无法过去的错误。我有一个简单的结构任务,必须作为远程系统上的不同用户运行,例如:
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选项,但它没有改变任何东西。有人可以帮忙吗?
答案 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)
如果目标内存/磁盘空间不足,也会发生这种情况。重新启动和/或解决内存/磁盘空间问题可以解决这个问题。