考虑以下sudo使用 Fabric 的调用:
def ls():
output = sudo('ls /tmp/', user = 'someone', shell = True)
print "Output:", output
执行此操作fab并在第一次提示您时输入错误sudo的密码。您将看到一条错误消息,并sudo再次要求您输入密码。第二次输入正确的密码。会话看起来像这样:
$ fab ls
[user@server] Executing task 'ls'
[user@server] sudo: ls /tmp/
[user@server] out: sudo password:
[user@server] out: Sorry, try again.
[user@server] out: sudo password:
[user@server] out: hsperfdata_someone
Output: Sorry, try again.
Done.
注意 的值是输入错误密码时output打印的第一条消息sudo(“抱歉,重试。”)。它不包含随后的正确输出(“hsperfdata_someone”)。
难道我做错了什么?在这种情况下,有没有更好的方法来正确捕获输出?