如何在结构中获取失败的主机

时间:2015-03-22 21:52:43

标签: python fabric

我正在使用面料,并且有很多我需要处理的主机。

如果任何主机出现故障,我将继续执行:

env.warn_only = True

但是我想在最后找到失败的主机列表。怎么样?我尝试了下面的内容,但无论是成功还是失败都没有任何结果。

error_list= []
success_list = []
@parallel
def my_run():
    try:
        sudo('sh test.sh')
        success_list.append(env.host)
    except:
        error_this.append(env.host)

error_list= []
success_list = []

2 个答案:

答案 0 :(得分:0)

这是我使用的代码:

@parallel
@roles(env.roles)
def dummy_workhorse():
    return run('hostname')

@task
@runs_once
@with_settings(hide('everything'), skip_bad_hosts=True)
@needs_host
def check_hosts():
    down_hosts = []
    for host, result in execute(dummy_workhorse).iteritems():
        if not isinstance(result, str):
            down_hosts.append(host)
    if down_hosts:
        print('Following hosts are down:')
        for host in down_hosts:
            print(host)
    else:
        print('All hosts are up and running!')

答案 1 :(得分:0)

尝试使用' env.host_string' 代替' env.host' 参考:http://docs.fabfile.org/en/1.8/usage/env.html#host-string

error_list= []
success_list = []
@parallel
def my_run():
    try:
        sudo('sh test.sh')
        success_list.append(env.host_string)
    except:
        error_list.append(env.host_string)

error_list= []
success_list = []