如何在多台linux上同时跑相同的command?


0
李新天,IT系统运维人员

我们有十几台linux的服务器,有时候需要同时跑相同的command,有时候需要同时跑不同的command。关键点是,要同时跑。有什么自动化的方法或者工具实现这个功能,而不是同时log in进去跑命令行?

菜鸟求指点。

Linux
评论
·

编辑


·
举报

·

2012年04月21日

2 条评论

melonking:自动化作业系统 比如HITACHI JP1 AJS 可以做到根据指定运行时间 进行计划调度 跨多平台 图形化界面


2012年04月24日



李新天:回复melonking:收到,回头试试看。


2012年04月24日



共 2 个答案

  • 最新
  • 最受赞同

  • 4
    EdyLiu,纷繁快速的IT里面只能修炼内功:以不变应万变

    puppet/cfengine.

    他们的工作原理就是C/S, 每个机器节点都有一个进程, 会监听管理端的更新. 然后执行相关指令.

    当然可以从管理端主动发起指令, 让节点执行某个cmd, 就和你的要求相符.

    puppet只一个集中化管理的好工具和方向, 可以要好好学习一下.

    评论
    ·

    编辑


    ·
    举报

    ·

    2012年04月21日


    1 条评论
    陆经华:


    2012年04月21日




    3
    DianQ,运维数据开发混合体, 略懂多, 精懂少.

    我有三种方法推荐:

    1. 同赞puppet, 它可以设置两种状态, 固定时间监听或者是手动执行, 客户端监听状态下, 只要你在服务端修改下puppet管理的配置就可以在指定的多台client下同时执行你想要的命令.

      但目前puppet我们主要还是用于服务器初始化, 配置管理 , 固定命令执行(例如代码分发, 同步, 上线)等. 普通的一些命令反而没用puppet , 因为感觉还是有些麻烦.

    2. 如果会python的话, 我建议使用 fablic 这个包 假如有A B C 三台机器, 要在上面执行ls -l的命令 你可以使用 fab A B C "ls -l" 的方式来执行

      它的原理其实就是ssh 过去执行, 所以要确保你当前的用户要有A B C 三台机的 ssh key

      fablic 不但可以做到这些, 你还可以对服务器分类, 对命令分类, 每次对某一类服务器执行某种命令等等, 还可以定义将不同的执行结果用不同的颜色显示.

    3. 就是自己写脚本了..

    #!/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

    发表回复