考虑以下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”)。
难道我做错了什么?在这种情况下,有没有更好的方法来正确捕获输出?