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

Python 如何在结构中获取失败的主机,python,fabric,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:

我使用的是织物,有很多主机需要处理

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

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 = []
以下是我使用的代码:

@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!')
尝试使用'env.host_string'而不是'env.host' 参考:

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 = []