linux多台主机批量执行命令(如何在多台linux上同时跑相同的command?)
0
我们有十几台linux的服务器 ,有时候需要同时跑相同的command ,有时候需要同时跑不同的command 。关键点是 ,要同时跑 。有什么自动化的方法或者工具实现这个功能 ,而不是同时log in进去跑命令行?
菜鸟求指点。
评论
·
编辑
·
举报
·2012年04月21日
共 2 条评论
自动化作业系统 比如HITACHI JP1 AJS 可以做到根据指定运行时间 进行计划调度 跨多平台 图形化界面
2012年04月24日
2012年04月24日
共 2 个答案
4
puppet/cfengine.
他们的工作原理就是C/S, 每个机器节点都有一个进程, 会监听管理端的更新. 然后执行相关指令.
当然可以从管理端主动发起指令, 让节点执行某个cmd, 就和你的要求相符.
puppet只一个集中化管理的好工具和方向, 可以要好好学习一下.
评论
·
编辑
·
举报
·2012年04月21日
2012年04月21日
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创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!