程序更新脚本备份

2602阅读 2评论2012-06-17 initrdimg
分类:LINUX

#!/bin/bash
#luohongjiang
#2012/3/19
#qq:123769752
#version 1.2
main()
{
. InfoData                   #导入变量文件

#####################################################
echo -e "$ys_green back file $ys_o"
waring
if (( $? == 1 ));then
   f_bakfile                    #备份文件
fi
####################################################
echo -e "$ys_green send file $ys_o"
waring
if (( $? == 1 ));then        
   f_active                     #传送文件
fi     
#######################################################
echo -e "$ys_green stop program $ys_o"
waring                              
if (( $? == 1 ));then
  stopTandB                  #停程序
fi
#########################################################
if (( $? == 4 ));then
    echo -e "package_file:\E[31m $_package \E[0m to dst_path:\E[31m $_re_patch \E[0m"
read -p 'are you sure[Y/n]:' _sure
if [[ $_sure == 'Y' ]];then
        echo "update program"
        doing                  #更新程序
fi
fi
#################################################################
echo -e "$ys_green start program $ys_o"
waring
if (( $? == 1 ));then
   startTandB                     #开始启动脚本
fi     
##################################################################
echo -e "$ys_green check program $ys_o" 
waring
if (( $? == 1 ));then                            
   chkTandb                          #检测程序状态
fi
#########################################################################
if [[ $_clearpackage == "Y" ]];then  #清理垃圾
echo -e "$ys_green clear update package $ys_o" 
    cleanpackage
fi
}
#########################################################################

waring()                             #交互模块
{   
    read -p 'are you sure[y/n]:' _sure
if [[ $_sure == 'y' ]];then
   return 1
else
   return 0
fi
}

f_bakfile()          #备份功能
{
_bmd=`date +%m-%d`
if [[ -e $_bakfile-${_bmd} ]];then
   echo '+----------------------------+'
   echo ' bak file is exist! '
   echo " Name: $(ls -ltr $_bakfile-${_bmd}|awk '{print  $9" "$6 " " $7" "$8}')"
   echo " Szie: $(du -hs  "$_bakfile-${_bmd}"|awk '{print $1}')"
   echo '+----------------------------+'
   return 0
    else
  cp $_bakfile $_bakfile-${_bmd} -r
  echo '+-----------------------------+'
  echo " Name: $(ls -ltr $_bakfile-${_bmd}|awk '{print  $9" "$6 " " $7" "$8}')"
  echo " Szie: $(du -hs  "$_bakfile-${_bmd}"|awk '{print $1}')"
  echo 'backup  Success!'
  echo '+-----------------------------+'
  return 2
    fi   
}

f_active()   #发送文件功能
{   
for i in ${IP[*]}
{       
        ssh $username@$i "mkdir -p $_envpath"     #username 默认是root  _envpath默认在 /var/update/package 
        rmPath=$username@$i:$_envpath             
        echo    "********************[$(date +%T)]"
scp -r $_package $rmPath
echo -e "********************[$i]\n"
   }
   return 3
}          #函数结束

stopTandB()   #停程序
{
 for i in ${IP[*]}
 {
   for k in ${_kill_pro[*]}
   { 
    ssh $username@$i "(
ps -ef|grep -v grep|grep $k >/dev/null
if (( $? == 0 ));then
   (pkill -9  $k)
   echo '**************************$k kill ok'
        else
           echo  '>>>>>>>>>>>>>>>>>>>>>>>>>$k kill fail!'
fi  
)"  
   }
           echo "++++++++++++++++++++++++++$i"  
 }
 return 4
}




doing()  #更新程序
{
  for i in  ${IP[*]}
  {
  ssh $username@$i "( 
                    if [[ -e $_envpath/$_package ]];then
                      if [[ -e $_re_patch ]];then
                            tar -xvf $_envpath/$_package -C $_re_patch
                echo '**************************[$i] Extra $_package file ok'
     else
      echo '**************************[$i] $_re_patch no exist!'  
                        fi  
    else
              echo '**************************[$i] $_envpath/$_package no exist!'
                    fi
                )"
  }
}

startTandB()  #启动脚本程序
{
 for i in $IP
 {
                     start_ktop_name=${_start_ktop##*/}
                     start_ktop_path=${_start_ktop%/`echo ${_start_ktop##*/}`}
  ssh $username@$i "(

                     cd $start_ktop_path
                     nohup ./$start_ktop_name &
                     
                    )>/var/tmp/start.log"
  echo "**************************$i is start ok!"
 }
}


chkTandb()   #检测程序状态
{
 sleep 5
 for i in ${IP[*]}
 { 
   for k in ${_kill_pro[*]}
   { 
    ssh $username@$i "(
                    ps aux|grep -v grep|grep $k
               )"
   }
     
   echo "**************************$i status"
 }
 return 5
}
cleanpackage() #清理更新的包文件
{
for i in $IP
{
  ssh $username@$i "(rm -rf $_envpath)"
  echo "**************************$i clear $_envpath over"
}
}
main

上一篇:List of Special Characters and Their Meanings
下一篇:网络质量批量检测脚本

文章评论