如何在多台linux上同时跑相同的command? - Linux - 乐维UP
puppet/cfengine.
他们的工作原理就是C/S, 每个机器节点都有一个进程, 会监听管理端的更新. 然后执行相关指令.
当然可以从管理端主动发起指令, 让节点执行某个cmd, 就和你的要求相符.puppet只一个集中化管理的好工具和方向, 可以要好好学习一下.
我有三种方法推荐:
同赞puppet, 它可以设置两种状态, 固定时间监听或者是手动执行, 客户端监听状态下, 只要你在服务端修改下puppet管理的配置就可以在指定的多台client下同时执行你想要的命令.
但目前puppet我们主要还是用于服务器初始化, 配置管理 , 固定命令执行(例如代码分发, 同步, 上线)等. 普通的一些命令反而没用puppet , 因为感觉还是有些麻烦.如果会python的话, 我建议使用 fablic 这个包 假如有A B C 三台机器, 要在上面执行ls -l的命令 你可以使用 fab A B C "ls -l" 的方式来执行
它的原理其实就是ssh 过去执行, 所以要确保你当前的用户要有A B C 三台机的 ssh key
fablic 不但可以做到这些, 你还可以对服务器分类, 对命令分类, 每次对某一类服务器执行某种命令等等, 还可以定义将不同的执行结果用不同的颜色显示.就是自己写脚本了..
#!/bin/bash if [ $1"~" == "~" ] ; then echo "I need server names" exit else SERVER_NAMES=(${1//,/ }) fi if [ $2"~" == "~" ] ; then echo "I need commend" exit else COMMEND=$2 fi for sn in ${SERVER_NAMES[@]} do ssh $sn "$COMMEND" done
共 2 条评论