我正在编写一个脚本来在几台主机上启动负载生成实验.我可以写一个bash脚本来启动多个ssh会话,但我希望使用更结构化的东西.由于我在大多数脚本中使用Python,我认为Fabric看起来是个不错的选择.
唯一的问题是我需要为每个命令传递少量主机特定数据(实际上只是一个id或计数器),我想并行运行它们.
换句话说,我想做类似下面的事情,其中host_num对于每个主机是不同的(可能只是递增).
@parallel
def launch():
with cd('/working/dir'):
run("./start/script -id=%d", host_num)
Run Code Online (Sandbox Code Playgroud)
Fabric中有可能吗?如果没有,是否还有其他工具可以用来完成同样的事情?
您可以检查用户/主机。每个任务都知道它们当前运行的环境:
env.hosts = ['user@host1.com', 'user@host2.com']
@task
def test():
print '%(user)s@%(host)s' % (env)
if env.host == 'host1.com':
id = 1
elif ...
run('echo "%s"' % (id))
Run Code Online (Sandbox Code Playgroud)
请随意以更优雅的方式编写它:)(一个建议是使用类似于 id 查找的 case 语句的字典)
| 归档时间: |
|
| 查看次数: |
1476 次 |
| 最近记录: |