我正在使用python结构与多个主机并行执行命令。
我有以下情况。
def list1():
env.hosts=[H1,H2,H3]
def myfunction():
#login into H1 and execute a command and wait for certain string.
#once get the string login to H2 and H3 in parallel and execute some other command
现在我必须在H1上运行一个命令并且在我从H1输出获得一些所需的字符串时期望输出一些输出,我需要在H2和H3上运行一些其他命令。 都是linux机器。
正在运行
fab -f fabfile.py -P list1 myfunction
像这样不是正确的方法。有什么方法可以实现这个目标吗?
由于
答案 0 :(得分:1)
我不确定我是否理解你想要的东西。我假设您要在h1上运行任务,等待结果并将此结果用作h2和h3上任务的输入。如果你想要别的东西,请忘记这个答案(并重新提出你的问题。)
一种选择是创建一个执行fab任务的python脚本(不是fab文件)。
类似的东西:
import fabfile
from fabric.tasks import execute
result = execute(fabfile.command_for_h1, hosts=[h1])
result_h1 = result[h1]
execute( fabfile.command_for_h2_h3, hosts=[h2,h3], result_h1 )
关键是execute方法。