当用户最初输入错误的密码时,Fabric sudo()会捕获不正确的输出

时间:2012-08-06 16:12:30

标签: python sudo fabric

使用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”)。

我做错了吗?在这种情况下,有没有更好的方法来正确捕获输出?

1 个答案:

答案 0 :(得分:2)

我会说这可能是一个要报告的错误,但您可以通过this section寻找一些不同的组合来尝试。