使用Fabric:
考虑以下sudo
调用
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”)。
我做错了吗?在这种情况下,有没有更好的方法来正确捕获输出?