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
    
  • 相关阅读:
    Jmeter中的几个重要测试指标释义
    接口测试考虑
    树Hash学习笔记
    kali linux主题美化
    Kali Linux 终端字体配色
    解决github无法打开
    Python requests数据的content和text的区别
    Python+adb操作移动端自动化测试
    linux后台运行python程序
    洛谷P2791 幼儿园篮球题 另解
  • 原文地址:https://www.cnblogs.com/zwgblog/p/6496602.html
Copyright © 2011-2022 走看看