Python Fabric在多台机器上运行命令

时间:2014-12-19 04:37:17

标签: python python-2.7 fabric

我正在使用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
像这样不是正确的方法。有什么方法可以实现这个目标吗?

由于

1 个答案:

答案 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方法。