首页 > 系统服务 > 详细

在集群中同步文件和命令的shell工具-02

时间:2020-01-10 18:42:54      阅读:80      评论:0      收藏:0      [点我收藏+]

CmdSync.sh

[root@localhost sync]# cat CmdSync.sh
#!/bin/bash


#同步集群命令

CONF=../config

PraserConf(){
    num=`sed -n -e ‘/^\[‘$1‘\]/=‘ $CONF`
    let temp=num+1
    sed -n ‘‘$temp‘p‘ $CONF
}

nodes_str=`PraserConf nodes`
old_ifs="$IFS"
IFS=","
nodes=($nodes_str)


CmdSync(){
    cmd=$1
    echo $1
    for node in ${nodes[*]}
    do  
        echo -e "\e[32m******$node******\e[0m"
        ssh root@$node "$cmd"
        if [ $? -eq 0 ]
        then
            echo cmd successful
        fi
    done
}

CmdSync "$1"

 

FileSync.sh:

[root@localhost sync]# cat FileSync.sh
#!/bin/bash


#同步集群文件
#入参为文件绝对路径

CONF=../config

PraserConf(){
    num=`sed -n -e ‘/^\[‘$1‘\]/=‘ $CONF`
    let temp=num+1
    sed -n ‘‘$temp‘p‘ $CONF
}

nodes_str=`PraserConf nodes`
old_ifs="$IFS"
IFS=","
nodes=($nodes_str)


SyncFile(){
    base_dir=$1
    echo $1
    base_dir=`echo $base_dir|awk -F"/" ‘{for (i=1;i<=NF-1;i++) printf("%s/",$i)}‘`
    echo $base_dir
    for node in ${nodes[*]}
    do
        ip addr|grep $node >/dev/null 2>&1
        if [ $? -ne 0 ]
        then
            scp -r $1 root@$node:$base_dir
            #>/dev/null 2>&1
            if [ $? -eq 1 ]
            then
                ssh root@$node "mkdir -p $base_dir"
                scp -r $1 root@$node:$base_dir
                #>/dev/null 2>&1
            fi
        fi
    done
}


#路径转换
#将路径转换为绝对路径
tran_path(){
    if [[ "$1" =~ ^/ ]]
    then
        if [[ "$1" =~ /$ ]]
        then
            base_dir=`echo $1|awk -F"/" ‘{for (i=2;i<=NF-1;i++) printf("/%s",$i)}‘`
            echo $base_dir
        else
            echo $1
        fi
    elif [[ -d $1 ]]||[[ -z $1 ]]
    then
        path=`pwd`/$1
        cd $path >/dev/null
        real_path=`pwd`
        echo $real_path
    else
        path=`pwd`/$1
        base_dir=`echo $path|awk -F"/" ‘{for (i=1;i<=NF-1;i++) printf("%s/",$i)}‘`
        cd $base_dir >/dev/null
        real_path=`pwd`/`basename $1`
        cd - >/dev/null
        echo $real_path
    fi
}

#tran_path $1
SyncFile `tran_path $1`

在集群中同步文件和命令的shell工具-02

原文:https://www.cnblogs.com/wuchy/p/12177395.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!