2012-09-24 27 views
2

我有類似的問題: How can I skip Fabric connections that ask for a password? 它沒有答案。我正在尋找一種方式來獲得面料考慮壞的任何主機要求輸入密碼,而不是SSH密鑰登錄,因爲這意味着我連接爲用戶沒有在服務器上的賬號(我遍歷大量的主機列表)。我試過設置Python Fabric:跳過需要密碼的登錄

env.password = None 

env.password = 'none' 

以及

with setting(warn_only=True): 

但面料不斷要求輸入密碼。任何方式在這個?

+0

'None或'none''總是評估爲'none''。 – Mizipzor

+0

@mizipzor對不起,那是不是字面Python代碼,我的意思是我已經試過「env.password =無」和「env.password ='無」 – Gargravarr

回答

7

相信env.abort_on_prompts將實現你需要的東西,也就是失敗,如果有需要的任何類型的用戶互動,同時工作時,公鑰認證是可能的。

根據該文件,此選項調用abort()這反過來又利用sys.exit,這引起了SystemExit使其能夠檢測並從內來電恢復到abort使用except SystemExit或相似。

+0

我發現選項,但遺憾的是它不正是它說,在任何提示下殺死腳本,即使使用warn_only,我也需要它忽略提示。雖然謝謝! – Gargravarr

+0

我修改了答案。根據文檔,你應該能夠從'中止()'調用只需通過捕捉'SystemExit'例外恢復,因此能夠繼續執行腳本,並具有無視需要密碼的主機所需的行爲。 –

+0

這聽起來非常有前途的,我給它一試! – Gargravarr

0

我只是修補了織物的utils.py返回加薪,而不是sys.exit(1)。讓我們乾淨地處理它,而不是它自己。

(about line 34) 
    else: 
     #sys.exit(1) 
     raise("I broke")