zoukankan      html  css  js  c++  java
  • 远程执行命令和文件分发shell脚本

    deploy.conf

    node01,all,other,datanode,journalnode,zookeeper,
    node02,all,other,datanode,journalnode,zookeeper,
    node03,all,other,datanode,journalnode,zookeeper,
    node04,all,other,namenode,
    node05,all,other,namenode,
    

     文件分发:deploy.sh

    #!/bin/bash
    #set -x
    
    if [ $# -lt 3 ]
    then 
      echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag"
      echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile"
      exit 
    fi
    
    src=$1
    dest=$2
    tag=$3
    if [ 'a'$4'a' == 'aa' ]
    then
      confFile=~/bin/deploy.conf
    else 
      confFile=$4
    fi
    
    if [ -f $confFile ]
    then
      if [ -f $src ]
      then
        for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'` 
        do
           scp $src $server":"${dest}
        done 
      elif [ -d $src ]
      then
        for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'` 
        do
           scp -r $src $server":"${dest}
        done 
      else
          echo "Error: No source file exist"
      fi
    
    else
      echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"
    fi
    

    远程执行命令:runRemoteCmd.sh

    #!/bin/bash
    #set -x
    
    if [ $# -lt 2 ]
    then 
      echo "Usage: ./runRemoteCmd.sh Command MachineTag"
      echo "Usage: ./runRemoteCmd.sh Command MachineTag confFile"
      exit 
    fi
    
    cmd=$1
    tag=$2
    if [ 'a'$3'a' == 'aa' ]
    then
      
      confFile=~/bin/deploy.conf
    else 
      confFile=$3
    fi
    
    if [ -f $confFile ]
    then
        for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'` 
        do
           echo "*******************$server***************************"
           ssh $server "source ~/.bash_profile; $cmd"
        done 
    else
      echo "Error: Please assign config file or run runRemoteCmd.sh command with deploy.conf in same directory"
    fi
    

     使用示例

    将~/.bashrc 分发到所有主机

    deploy.sh ~/.bashrc ~/ all
    runRemoteCmd.sh "source ~/.bashrc" all
    

     在zookeeper主机上执行cp -rf /home/hadoop/zkdata/* /home/hadoop/zkdata_upgrade命令

    runRemoteCmd.sh "cp –rf /home/hadoop/zkdata/* /home/hadoop/zkdata_upgrade" zookeeper
    
  • 相关阅读:
    RESTful概念理解
    ORACLE数据库忘记SYS和SYSTEM密码,SYSTEM被锁定怎么办?
    MD5加密实现类不是Windows平台下联邦信息处理标准验证过的加密算法的一部分
    基于mqtt协议实现手机位置跟踪
    参考手册——掌握技术的重要途径
    在线编辑器跨域处理
    尝试新的东西
    BootStrap-DualListBox怎样改造成为双树
    软件开发中怎样有效地进行分析和设计
    引用数据被禁用时的解决办法
  • 原文地址:https://www.cnblogs.com/zwgblog/p/6496602.html
Copyright © 2011-2022 走看看