1. 程式人生 > >【甘道夫】拷貝檔案到多臺伺服器的Shell指令碼

【甘道夫】拷貝檔案到多臺伺服器的Shell指令碼

在多機叢集環境中,經常面臨修改配置檔案後拷貝到多臺伺服器的情況,傳統的執行scp比較麻煩,所以寫了以下shell指令碼,可以將指定檔案拷貝到多臺機器。

使用方法請參見HELP部分程式碼。

#!/bin/bash
help()
{
   cat << HELP
        --------------HELP------------------------
        This shell script can copy file to many computers.
        Useage:
                copytoall filename(full path form /home) targetpathfrom/  username ip1 ip2 ip3....
        Example:
                copytoall /home/casliyang/hadoop-2.2.0/etc/hadoop/core-site.xml /home/casliyang/hadoop-2.2.0/etc/hadoop/ casliyang 192.168.0.5 192.168.0.6 192.168.0.7 192.168.0.8
        ------------------------------------------
HELP
   exit 0
}

currentdate=$(date +%Y-%m)

echo  $currentdate " execute copytoall"

if [ $1 = "-h" ] ; then 
        help
        exit 0
fi

file=$1
shift
targetpath=$1
shift
user=$1
shift
tempip=0

if [ -f $file ] ; then
        while [ $# -gt 0  ] ; do
                tempip=$1
                shift
                scp $file ${user}@${tempip}:${targetpath}
        done
else
        echo "wrong file!"
        exit 0
fi