2011-03-30 18 views
1

我有兩個用戶名和相應的密碼,我用來管理我的服務器,有沒有辦法讓我的fab腳本/模塊,使用一個,然後第二個,如果第一個失敗,無需保持完整列表每個主機甚至一組主機的憑證。如何捕捉Fabric中的auth錯誤並重試?

我看到文檔的DOA沒辦法嘗試/唯獨身邊的run()或類似的...

回答

1

run等命令提高SystemExit

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

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

try: 
    with(settings(host_string='%[email protected]' % first_user,password = first_password)): 
     do_stuff() 
except SystemExit: 
    with(settings(host_string='%[email protected]' % second_user,password = second_password)): 
     do_stuff() 
+0

謝謝,這是有益的。要做到這一點,我不得不將每個調用都包含在try/except塊中。 Fabric設置中是否有任何方法可以執行此操作或某個頂級目錄,與您可以如何設置'env.warn_only'類似? – jdotjdot 2014-06-02 00:51:11

+0

jdotjdot,你應該只需要在嘗試/除了每個通話都打包,如果每個通話都需要嘗試兩個密碼,對吧? – robert 2014-06-24 17:14:16

+0

這實際上不是我的問題;我有類似的東西,但不是這個用例。 – jdotjdot 2014-06-24 18:13:07