如何捕获Fabric中的认证错误并重试?

1 投票
1 回答
2226 浏览
提问于 2025-04-16 14:42

我有两个用户名和对应的密码,用来管理我的服务器。有没有办法让我的fab脚本或模块先用第一个用户名和密码,如果失败了再用第二个,而不需要为每个主机或者一组主机维护一整套的凭证呢?

我在文档里没找到关于在run()或者类似的地方使用try/except的方法...

1 个回答

1

run 和其他命令会引发 SystemExit

from fabric.api import run,cd,put,sudo,settings

def do_stuff():
    run('ls derp')

try:
    with(settings(host_string='%s@localhost' % first_user,password = first_password)):
        do_stuff()
except SystemExit:
    with(settings(host_string='%s@localhost' % second_user,password = second_password)):
        do_stuff()

撰写回答