Fabric Group - список хостов для строк - PullRequest
1 голос
/ 25 сентября 2019

Используя Fabric2, вы можете создать группу для последовательного или потокового выполнения команд.

g = ThreadingGroup('192.168.101.5', '192.168.101.10', user='username', port=22, connect_kwargs={'password': 'password'})    
g.run('uptime')

# Returns:
# {<Connection host=192.168.101.10 user=esp>: <Result cmd='uptime' exited=0>, <Connection host=192.168.101.5 user=esp>: <Result cmd='uptime' exited=0>}

Если я передаю список, я получаю сообщение об ошибке rsplit, так как ожидается наличие группы строк.Затем я преобразовываю свой список в строки и запускаю снова:

s = str(servers).strip('[]')
g = ThreadingGroup(s, user='username', port=22, connect_kwargs={'password': 'password'})
g.run('uptime')

# fabric.exceptions.GroupException: {<Connection host='192.168.101.5', '192.168.101.10' user=username>: gaierror(-2, 'Name or service not known')}

В последнем примере «узел подключения» объединяется, а не разделяется, как в предыдущем примере.Как мне с этим смириться?

1 Ответ

1 голос
/ 25 сентября 2019

Вы не можете передать список в качестве первого аргумента, это не сработает.Вам необходимо распаковать список:

g = ThreadingGroup(*s, user='username', port=22, connect_kwargs={'password': 'password'})
...