我有一个类似的问题: 如何跳过要求密码的 Fabric 连接? 没有答案。我正在寻找一种方法让 Fabric 认为任何要求输入密码而不是 SSH 密钥登录的主机都是错误的,因为这意味着我正在连接的用户在服务器上没有帐户(而且我遍历大量主机)。我试过设置
env.password = None
和
env.password = 'none'
也
with setting(warn_only=True):
但是 Fabric 一直在询问密码。有什么办法吗?
我有一个类似的问题: 如何跳过要求密码的 Fabric 连接? 没有答案。我正在寻找一种方法让 Fabric 认为任何要求输入密码而不是 SSH 密钥登录的主机都是错误的,因为这意味着我正在连接的用户在服务器上没有帐户(而且我遍历大量主机)。我试过设置
env.password = None
和
env.password = 'none'
也
with setting(warn_only=True):
但是 Fabric 一直在询问密码。有什么办法吗?
我相信env.abort_on_prompts将实现您所需要的,即如果需要任何类型的用户交互则失败,同时在可以进行公钥身份验证时工作。
根据文档,此选项调用abort(),而后者又使用sys.exit,这会引发SystemExit,从而可以检测到内部调用并从abort
使用except SystemExit
或类似调用中恢复。
我刚刚修补了 fabric 中的 utils.py 以返回 raise 而不是 sys.exit(1)。让你干净利落地处理它,而不是让它自己胡扯。
(about line 34)
else:
#sys.exit(1)
raise("I broke")