1. 程式人生 > >多臺伺服器檔案分發指令碼和命令執行指令碼

多臺伺服器檔案分發指令碼和命令執行指令碼

背景:基於hadoop的分散式部署 (具體請看文章),為了方便檔案的分發與命令的執行,顧編制此指令碼

伺服器配置四臺:(h101    192.168.44.101)(h102    192.168.44.102)(h103    192.168.44.103)(h104   192.168.44.104)

備註:h101可以ssh免密碼登入進入 h102 h103  h104  .

一、命令分發

1、本機使用hadoop使用者操作(建議初學者使用root(去掉所有命令中的sudo),完成後,再新建使用者進行sudo配置後,再操作)

建立資料夾:shell

新建檔案:xcall.sh (命令分發執行)

修改檔案許可權

2、xcall.sh 內的指令碼編寫:

#!/bin/bash
#echo hello world 

#獲取輸入引數
[email protected]
echo ${params}

#通過hostname來執行ssh命令 提前進行hostname和ip的繫結對應
for (( i = 101 ; i <= 104  ; i = $i + 1  )) ; do
        echo ============ h$i $params  ===============
        ssh h$i $params
done

測試:(基於hadoop的分散式配置) (執行指令碼加(./) 代表當前目錄下)

當無需輸入密碼,成功,代表檔案命令分發成功。

但為了可以在任何目錄下執行次操作:

輸入命令:$>echo $PATH

檢視指令碼可以自動識別的路徑:

本地將指令碼放置到:/usr/local/bin  目錄下  

進入任何目錄測試: (備註:輸入xc 後按tab鍵可以自動補全 說明配置成功)

 

二、檔案分發

1、建立xsync.sh  檔案分發指令碼

2、修改xsync.sh 

3、編寫檔案內容

#!/bin/bash
echo '檔案分發中'

#檢視當前檔案是否目錄
echo $#
if [[ $# -lt 1 ]] ; then echo no params ; exit ; fi

p=$1
#echo p=$p
#注意此處執行linux命令  並非英文或中文的單引號  而是 tab鍵上單引號
dir=`dirname $p`
#echo dir=$dir
filename=`basename $p`
#echo filename=$filename
cd $dir
fullpath=`pwd -P .`
#echo fullpath=$fullpath

#獲取當前伺服器當前使用者

user=`whoami`
for (( i = 102 ; i <= 104 ; i = $i + 1 )) ; do
        echo =========== h$i $1  ======================
        rsync -lr $p ${user}@h$i:$fullpath
done

4、測試、

備註:代表成功。

同時為了在任意目錄均可執行,進行上述描述過的操作即可