如何在多台linux上同时跑相同的command?
0
我们有十几台linux的服务器,有时候需要同时跑相同的command,有时候需要同时跑不同的command。关键点是,要同时跑。有什么自动化的方法或者工具实现这个功能,而不是同时log in进去跑命令行?
菜鸟求指点。
melonking:自动化作业系统 比如HITACHI JP1 AJS 可以做到根据指定运行时间 进行计划调度 跨多平台 图形化界面
李新天:回复melonking:收到,回头试试看。
4
puppet/cfengine.
他们的工作原理就是C/S, 每个机器节点都有一个进程, 会监听管理端的更新. 然后执行相关指令.
当然可以从管理端主动发起指令, 让节点执行某个cmd, 就和你的要求相符.
puppet只一个集中化管理的好工具和方向, 可以要好好学习一下.
共 1 条评论
陆经华:赞
3
我有三种方法推荐:
-
同赞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
#!/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 条评论