Python 结构:防止询问密码

Python 结构:防止询问密码,python,amazon-ec2,fabric,Python,Amazon Ec2,Fabric,我们有几十个AmazonEC2SPOT实例同时运行。我们必须迭代所有这些实例并执行一些命令。但有时登录失败的原因不明(可能是网络问题或其他)。所以在某些情况下,fabric会不断询问密码,但我不希望它这样做 守则: env.hosts = [ip] env.reject_interactive_password = True env.hosts = ['%s@%s' % ('ubuntu', 'PASSWORD')] env.host_string = '%s@%s' % ('ubuntu',

我们有几十个AmazonEC2SPOT实例同时运行。我们必须迭代所有这些实例并执行一些命令。但有时登录失败的原因不明(可能是网络问题或其他)。所以在某些情况下,fabric会不断询问密码,但我不希望它这样做

守则:

env.hosts = [ip]
env.reject_interactive_password = True

env.hosts = ['%s@%s' % ('ubuntu', 'PASSWORD')]
env.host_string = '%s@%s' % ('ubuntu', ip)
env.user = 'ubuntu'
env.password = 'PASSWORD'

env.reject_unknown_hosts = False
env.disable_known_hosts = True

env.warn_only = True

run('some command')
正如您所看到的,我添加了reject_interactive_密码,但不幸的是,它不起作用。因此,正如您所理解的,我们的循环挂起在某些实例上,而我们无法到达其他实例(这是一个问题)

出于某些原因,我们不使用ssh证书,只使用基于密码的身份验证

我们使用PIP最新的面料


那么,如何防止fabric询问密码呢?谢谢

您确定fabric在提示输入密码,而不是另一端的
sudo
?请看一看,了解一些关于如何找出谁在提示的想法


请看一下使用,因为您可以指定每个主机字符串的密码。你不应该这样做,但知道你可以这样做是件好事。如果您的命令没有利用shell语法,您可能还需要尝试使用该选项。我尝试了许多这样的选项来克服一些类似的交互式密码提示。最后,我们使用了基于SSH密钥的访问,因为它更干净、更可靠。

我找到了“提示时中止”选项。它在任何输入提示下执行sys.exit()。这并不是我所需要的,我看到一些人希望它也跳过这类事情,而不是终止。但是好的,我可以捕捉到退出信号,跳过当前主机。这不是一件好事,可能会有副作用,但可能会被接受为临时解决方案。

我假设您希望脚本在出现异常后继续。您可能可以调整连接超时,并将代码包装成
try:。。。除外:
条款。您可以捕获超时时出现的异常,只显示一条消息而不退出。

是的,这不是一个请求sudo密码的命令,因为ubuntu用户在EC2的sudoers组中,当我手动执行某些命令时,它从未请求我输入sudo密码。可能的重复