将命令分发到多个节点

cooperate的Python项目详细描述


cooperative是一个shell命令,通过将命令分发给多个节点,以协作方式执行命令。

它需要python>;=3.3和asyncio。

例如:

cooperate --local -- echo FOO

将在本地执行作业“echo foo”。

这个:

cooperate --ssh me@my.node -- echo FOO

基本等同于:

ssh me@my.node echo FOO

您可以声明任意多个节点。例如:

cooperate --local --ssh me@my.node --ssh me@my.second.node -- echo FOO

相当于:

echo FOO
ssh me@my.node echo FOO
ssh me@my.second.node echo FOO

您还可以同时声明许多作业。例如:

cooperate --local --command "echo FOO" --command "echo BAR"

相当于:

echo FOO
echo BAR

安装

pip install cooperate

节点

命令可以通过此类节点分发:

  • –本地本地执行
  • –ssh通过ssh执行
  • –docker在本地docker容器中执行
  • –lxc在本地lxc容器中执行

这些选项可以根据需要重复。

模式

默认情况下,它会将每个命令生成到每个节点。

-m–模式允许配置所需模式。

all模式执行所有节点中的所有命令:

cooperate --local --ssh me@my.node --ssh me@my.second.node \
    --command="echo FOO" --command="echo BAR"

相当于:

echo FOO
echo BAR
ssh me@my.second.node echo FOO
ssh me@my.second.node echo BAR

分发模式在所有节点之间共享命令:

cooperate --local --ssh me@my.node --ssh me@my.second.node \
    --command="echo FOO" --command="echo BAR" --mode=distribute

相当于:

echo FOO
ssh me@my.second.node echo BAR

并发性

默认情况下,它同时执行所有作业。

-b–batch选项允许一次仅对指定数量的作业执行。支持百分比和有限数字:

cooperate --local --concurrence 1 \
    --command="echo FOO" --command="echo BAR" --command="echo BAZ"

cooperate --local --concurrence 33% \
    --command="echo FOO" --command="echo BAR" --command="echo BAZ"

并发系统维护一个运行作业的窗口。当一个作业返回时,它将启动一个剩余的作业,依此类推。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓 studio安装的java Unity本机广告   java如何将映射转换为对象   java我试图使用rest控制器从h2数据库中检索记录,但它说没有数据集   反思为什么会抛出java。lang.InstanceException?   在opensuse中找不到Java/javac   java为Android上的谷歌地图添加了5900多个标记。如何有效地做   java如何在if语句中使用循环   java如何在JPA(Hibernate)中映射一对多关系和复合主键?   如何在Java中读取和写入外部进程?   Java线程。睡眠时间最短   java使用EclipseGradle插件如何离线托管和使用依赖项(库jar文件)   java为什么虚拟引用在排队时没有被清除?   java无法理解如何创建用于响铃报警的取消按钮   java解析不应通过注入容器错误发生   java Toast或ProgressDialog不显示   java在自定义对象上使用优先级队列的更好方法   java格式的。wmv文件。(或者任何视频文件都很好)   从页面调用另一个侦听器后,不会调用java JSF<f:ajax>侦听器   java注释ConfigApplicationContext不能多次刷新有什么原因吗?