2016年4月6日 星期三

Linux scp rsync多網段管理

當MIS總是會管理到很多台主機
一台兩台還沒甚麼感覺,但是當數量變二十幾台後就相當有感

為此寫了支SSH與RSYNC組合應用的BASH檔作為管理上版與收集資訊用


#!/bin/bash
# Program:
#       SCP佈檔設定變更
# History:
# 2016/04/06 Edwin.Chen

#今天的日期
nowDate=`date +"%Y%m%d"`

#DMZ位置
dmzdir="/tmp/edwin/dmz/";
#資料來源
SOURCE="/tmp/edwin/source/";
#目的資料夾
REMOTEDIR="/tmp/edwin/";
#要執行的BASH
pullsh=mv.sh
#接收資料位置
collect="/tmp/edwin/collect/";

cd /tmp/edwin
test ! -d ${collect} && mkdir "collect"
test ! -d ${SOURCE} && echo "SOURCE資料夾不存在"
test ! -d ${dmzdir} && echo "DMZ資料夾不存在"
test ! -d ${dmzdir} && exit;
#檢查今日日期的目錄是否存在,如果不存在就建一個(!代表反面語意)
cd ${REMOTEDIR}

echo '1)DMZ1'
echo '2)DMZ2'
echo '3)DMZ3'
echo '4)DMZ4'
echo '5)TEST'
read -p "請輸入DMZ區段:" -t 30 dmz

#將DMZ檔案讀入陣列
READFILE=${dmzdir}dmz${dmz}.txt
while read line; do
      declare i=${i}+1
      host[$i]=${line}
done < ${READFILE}

#SCP佈檔
A=1;
declare -i MAX=${i}-1;
while [ ${A} -le ${MAX} ]; do
        #佈檔
        rsync -arvz --rsh=ssh ${SOURCE} ${host[$A]}:${REMOTEDIR}
        #遠端執行
        ssh ${host[$A]} 'bash -s' < ${SOURCE}${pullsh}
        #拉檔回傳
        rsync -arvz --rsh=ssh ${host[$A]}:${REMOTEDIR}/. ${collect}
        A=`expr ${A} + 1`;
        #exit為測試用註解,代表執行1迴圈即離開。
        #exit;
done;






沒有留言:

張貼留言