2

我有一个类似的问题: 如何跳过要求密码的 Fabric 连接? 没有答案。我正在寻找一种方法让 Fabric 认为任何要求输入密码而不是 SSH 密钥登录的主机都是错误的,因为这意味着我正在连接的用户在服务器上没有帐户(而且我遍历大量主机)。我试过设置

env.password = None

env.password = 'none'

with setting(warn_only=True):

但是 Fabric 一直在询问密码。有什么办法吗?

4

2 回答 2

7

我相信env.abort_on_prompts将实现您所需要的,即如果需要任何类型的用户交互则失败,同时在可以进行公钥身份验证时工作。

根据文档,此选项调用abort(),而后者又使用sys.exit,这会引发SystemExit,从而可以检测到内部调用并从abort使用except SystemExit或类似调用中恢复。

于 2012-09-24T18:13:41.230 回答
0

我刚刚修补了 fabric 中的 utils.py 以返回 raise 而不是 sys.exit(1)。让你干净利落地处理它,而不是让它自己胡扯。

(about line 34)
    else:
        #sys.exit(1)
        raise("I broke")
于 2014-04-03T17:46:55.770 回答