这与我的previous question有关,但不同。
我有以下fab文件:
from fabric.api import *
host1 = '192.168.200.181'
offline_host2 = '192.168.200.199'
host3 = '192.168.200.183'
env.hosts = [host1, offline_host2, host3]
env.warn_only = True
def df_h():
with settings(warn_only=True):
run("df -h | grep sda3")
结果是:
[192.168.200.199] run: df -h | grep sda3
Fatal error: Low level socket error connecting to host 192.168.200.199: No route to host
Aborting.
执行命中脱机服务器后,它将立即中止,而不考虑env.hosts列表中的其他服务器。
我使用了env设置“warn_only=True”,但可能是使用不当。
如何修改此行为,使其只打印错误并继续执行?
根据Fabric documentation on warn_only
在服务器关闭的情况下,这将没有帮助,因为在执行
run
/sudo
/local
之前,SSH尝试期间发生故障。一种解决方案是创建一个函数,在执行任务之前检查每个服务器是否已启动。下面是我使用的代码。
你没用错。您甚至可以在命令行上提供
--warn-only=true
。It's the documented method suggested by the development team.从版本1.4开始,Fabric有一个
--skip-bad-hosts
选项,可以从命令行设置,也可以通过在fab文件中设置变量来设置。此选项的文档如下: http://docs.fabfile.org/en/latest/usage/fab.html#cmdoption--skip-bad-hosts
别忘了还要显式地设置超时值。
相关问题 更多 >
编程相关推荐