程式碼上線的shell指令碼

首席提問官發表於2018-11-27

本指令碼來自有學習阿銘的博文學習:
工作中,生產環境中一個業務在跑在多臺機器上,為的是負載均衡,高可用。如何讓這些程式碼保持一致呢?

提示:本文中的S全部都$符,不要問為什麼,馬雲爸爸的社群就這樣。

#!/bin/bash
#用途:程式碼上線的的shell指令碼。
#作者:Caron maktini
#日期:2018年11月27日
#版本:v0.1

#提醒使用者,是否更新了要上線的程式碼列表檔案 
read -p "你是否已經更新了檔案列表./file.list?確認請輸入Y,或者按其他任意鍵退出指令碼。" a

#如果直接按回車,也會退出指令碼 
if [ -z "$a" ]
then 
      exit 1
fi

if [ Sa == "y" -o $a == "Y" ]
then 
    echo "指令碼將在2秒後,繼續執行。" 
     #每秒輸出一個。共輸出兩個 

    for i in 1 2 
    do 
        echo  -n "."
        sleep 1 
    done 
    echo 
else 
    exit 1 
fi 

#判斷有無./rsync.exp檔案 
[ -f ./rsync.exp ] && rm -f ./rsync.exp 

#定義rsync. exp 
cat > ./rsync.exp << EOF 
#!/usr/bin/expect 
  set passwd "密碼"   
  set host [lindex $argv 0] 
  set file [lindex $argv 1]

spawn rsync -avR  --files-from=$file   /   user#S host:/ 
expect  {
    "yes/no"  {send "yes
"} 
    "password:"  {send  $passwd
} 
}

expect eof 
EOF 

chmod a+x ./rsync.exp 

#定義檢測檔案是否存在的函式 
if_file_exist()
{
     if  [ ! -f $1 ]
    then 
         echo "檔案$1不存在,請檢查。"
         exit 1
 }
 
#ip.list為所有WEB機器的ip列表 
#file.list為要同步的檔案列表 

for ip in `cat ./ip.Iis` 
do 
    ./rsync.exp $ip ./file.Iist 
done 

#善後處理 
rm-f  rsync.exp 


#建立user01使用者,並且保證user01使用者對WED使用者有寫許可權。





相關文章