web服务器运维脚本

这是一个用于自动化运维Web服务器的脚本,包括检查服务器状态、备份Nginx配置文件、创建中文和英文网站的镜像、备份用户数据等功能。脚本详细记录了操作日志并提供了使用说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/bash
#
#this is a main() interface
#    author:Haibin Wang
#    Version:  1.0.0.0
#
#
_hostname=$(hostname | awk -F "." '{print $1}')
#the port of nginx
_pnginx=80
#the port of Chinese web site
_pwwworg=8080
#the port of English web site
_pwwwcom=8081
#the swich of nfs
_nflag=yes
#check log
_logfile=/tmp/${_hostname}chk$(date +%Y%m%d%H%M).log
echo "LogFileName:${_hostname}chk$(date +%Y%m%d%H%M).log">>$_logfile
echo "IP:">>$_logfile
ifconfig | grep Mask >>$_logfile
echo "">>$_logfile
echo "=====================================================">>$_logfile
echo "srv : check the status of server running!"
echo "bakngx : backup the control file of nginx!"
echo "baktomchn : create a image of chinese web site!"
echo "baktomeng : create a image of english web site!"
echo "bakusrchn : backup the datafile of chinese users!"
echo "bakusreng : backup the datafile of english users!"
echo "storesecene : protect scene!"
echo "crtsnap : create a web system snapshot!"
echo "restorescene : recovery web system scene!"
echo "restoresnap : recovery web system snapshot point!"
echo ""
echo ".............................................................">>$_logfile
echo "usage:">>$_logfile
echo "srv : check the status of server running!">>$_logfile
echo "bakngx : backup the control file of nginx!">>$_logfile
echo "baktomchn : create a image of chinese web site!">>$_logfile
echo "baktomeng : create a image of english web site!">>$_logfile
echo "bakusrchn : backup the datafile of chinese users!">>$_logfile
echo "bakusreng : backup the datafile of english users!">>$_logfile
echo "storescene : protect scene!">>$_logfile
echo "crtsnap : create a web system snapshot!">>$_logfile
echo "restorescene : recovery web system scene!">>$_logfile
echo "restoresnap : recovery web system snapshot point!">>$_logfile
echo ".............................................................">>$_logfile
_dfbkhome=/home/backup/ #backup home directory
_bkprocn=${_dfbkhome}www/cn/  #backup china web site base directory
_bkproen=${_dfbkhome}www/en/  #backup english web site base directory
_bkngx=${_bkprocn}ngx/  #backup nginx
_bktomcn=${_bkprocn}tomcat/manu/  #backup china web site
_bktomen=${_bkproen}tomcat/manu/  #backup english web site
_bkusrcn=${_bkprocn}usr/  #chinese user datas
_bkusren=${_bkproen}usr/  #english user datas
_bkscenecn=${_bkprocn}scene/  #chinese scene
_bksceneen=${_bkproen}scene/  #english scene
_bksnapcn=${_bkprocn}tomcat/snap/  #chinese snapshot
_bksnapen=${_bkproen}tomcat/snap/  #english snapshot
_weblogscn=$_dfbkhome/cn/weblogs   #chinese web server level logs
_weblogsen=$_dfbkhome/en/weblogs   #english web server level logs
_applogscn=$_dfbkhome/cn/applogs   #chinese app server level logs
_applogsen=$_dfbkhome/en/applogs   #english app server level logs
_mysql=${_dfbkhome}mysql  #mysql backup directory
mkdir -p $_bkprocn
mkdir -p $_bkproen
mkdir -p $_bkngx
mkdir -p $_bktomcn
mkdir -p $_bktomen
mkdir -p $_bkusrcn
mkdir -p $_bkusren
mkdir -p $_bkscenecn
mkdir -p $_bksceneen
mkdir -p $_bksnapcn
mkdir -p $_bksnapen
mkdir -p $_weblogscn
mkdir -p $_weblogsen
mkdir -p $_applogscn
mkdir -p $_applogsen
mkdir -p $_mysql

#backup performance tunes
#the usage of function baklogs:
#   baklogs $1 $2 $3 $4 $5
#     $1 : web|apps
#     $2 : the absolute path of source forder of logs
#     $3 : the absolute path of destination forder of baklogs
#     $4 : log file name
#     $4 : the type of the server
#            tomcat_cn : chinese web site
#            tomcat_en : english web site
#            service_cn : service chinese web site
#            service_en : service english web site
function baklogs(){
   echo "start to backup $5 logs">>$4
   echo "start to backup $5 logs"
   mkdir -p /tmp/_logs/>>$4
   rm -rf /tmp/_logs/* >>$4
   _reg=.{1,30}\.log$
   cd $2>>$4
   for _log in $(echo *) #check if these logs exists
   do
      if [[ $_log =~ $_reg ]] ; then
          mv $_log /tmp/_logs >>$4
      fi
   done
   cd /tmp/_logs >>$4
   case $1 in
 web)
     _weblogname=web$(date +%Y%m%d%H%M).logs>>$4
     echo "the web log backup file is $3$_weblogname">>$4
     echo "the web log backup file is $3$_weblogname"
            _log=""
            _log=$(echo *)
            if [[ $_log = "*" ]] ; then
  echo "No logs to backup">>$4
  echo "No logs to backup"
  return 1
     else
      tar -czvf $_weblogname ./* >>$4
      mv $_weblogname $3 >>$4
      echo "backup logs finished!">>$4
      echo "backup logs finished!"
  return 0
     fi
 ;;
 apps)
     _appslogname=apps$(date +%Y%m%d%H%M).logs>>$4
     echo "the web log backup file is $_appslogname">>$4
     echo "the web log backup file is $_appslogname"
            _log=""
            _log=$(echo *)
            if [[ $_log = "*" ]] ; then
  echo "No logs to backup">>$4
  echo "No logs to backup"
  return 1
     else
      tar -czvf $_appslogname ./* >>$4
      mv $_appslogname $3 >>$4
      echo "backup logs finished!">>$4
      echo "backup logs finished!"
  return 0
     fi
 ;;
 *)
          echo "Usage: baklogs [web|apps] [source_log_path] [dest_log_path] log_file_name"
          echo "Usage: baklogs [web|apps] [source_log_path] [dest_log_path] log_file_name">>$4
   return 2
 ;;
   esac
}
echo "start to tune backup performance"
echo "start to tune backup performance">>$_logfile
baklogs web /usr/local/project/tomcat_cn/logs $_weblogscn $_logfile tomcat_cn
baklogs web /usr/local/project/tomcat_en/logs $_weblogsen $_logfile tomcat_en
#baklogs app /usr/local/project/tomcat_cn/webapps/ROOT/logs/ $_applogscn $_logfile tomcat_cn
#baklogs app /usr/local/project/tomcat_en/webapps/ROOT/logs/ $_applogsen $_logfile tomcat_en
echo "tune backup performance finished!"
echo "tune backup performance finished!">>$_logfile

#function
#Note: the usage function as flows:
#  _function_name  $1  $2  $3
#     $1 stands for the parameter which is needed
#     $2 stands for the parameter which is source path
#     $3 stands for the parameter which is destination path
#     $4 stands for the parameter which is logfile
#
function srv(){
 echo "hello srv" 
}
function bakngx(){
   _ngxfilename=nginx$(date +%Y%m%d%H%M).conf
   echo "Nginx control file name is $_ngxfilename">>$4
   echo "start to backup nginx control file ...">>$4
   echo "Nginx control file name is $_ngxfilename"
   echo "start to backup nginx control file ..."
   cp -rf $2 $3$_ngxfilename >>$4
   if [[ $? -eq 0 ]] ; then
     echo "nginx backup successfully,the backup file : $3$_ngxfilename">>$4
     echo "nginx backup finished!">>$4
     echo "nginx backup successfully,the backup file : $3$_ngxfilename"
     echo "nginx backup finished!"
     return 0
   else
     echo "nginx backup failed!">>$4
     echo "nginx backup finished!">>$4
     echo "nginx backup failed!"
     echo "nginx backup finished!"
     return 1
  fi
}
function baktomchn(){
   _tmcn=tomcatchinese$(date +%Y%m%d%H%M).dmp
   echo "Tomcat backup filename is $_tmcn">>$4
   echo "start to backup tomcat">>$4
   echo "Tomcat backup filename is $_tmcn"
   echo "start to backup tomcat"
   cd $2
   cd ..
   tar -czvf $_tmcn $1>>$4
   if [[ $? -eq 0 ]] ; then
      mv $_tmcn $3>>$4
      echo "tomcat backup successfully,the backup file : $3$_tmcn">>$4
      echo "tomcat backup successfully,the backup file : $3$_tmcn"
      echo "tomcat backup finished!">>$4
      echo "tomcat backup finished!"
      return 0
   else
      echo "tomcat backup failed!">>$4
      echo "tomcat backup failed!"
      return 1
   fi
  
}
function baktomeng(){
   _tmen=tomcatenglish$(date +%Y%m%d%H%M).dmp
   echo "Tomcat backup filename is $_tmen">>$4
   echo "start to backup tomcat">>$4
   echo "Tomcat backup filename is $_tmen"
   echo "start to backup tomcat"
   cd $2
   cd ..
   tar -czvf $_tmen $1 >>$4
   if [[ $? -eq 0 ]] ; then
      mv $_tmen $3>>$4
      echo "tomcat backup successfully,the backup file : $3/$_tmen"
      echo "tomcat backup successfully,the backup file : $3/$_tmen">>$4
      echo "tomcat backup finished!"
      echo "tomcat backup finished!">>$4
      return 0
   else
      echo "tomcat backup failed!">>$4
      echo "tomcat backup failed!"
      return 1
   fi
 
}
function bakusrchnbak(){
   _ucndata=usrcndatas$(date +%Y%m%d%H%M).udt
   echo "User data backup filename : $_ucndata">>$4
   echo "start to backup user datas">>$4
   tar -czvf $3/$_ucndata $2 >>$4
   if [[ $? -eq 0 ]] ; then
 echo "user data has been backup successfully, the backup file is $_ucndata">>$4
        echo "user datas backup finished!">>$4
      return 0
   else  
 echo "user datas backup failed!">>$4
     return 1
   fi
}
function bakusrengbak(){
   _uendata=usrendatas$(date +%Y%m%d%H%M).udt
   echo "User data backup filename : $_uendata">>$4
   echo "start to backup user datas">>$4
   tar -czvf $3/$_uendata $2 >>$4
   if [[ $? -eq 0 ]] ; then
 echo "user data has been backup successfully, the backup file is $_uendata">>$4
        echo "user datas backup finished!">>$4
      return 0
   else  
 echo "user datas backup failed!">>$4
     return 1
   fi
}
function storescenebak(){
   _scene=scene$(date +%Y%m%d%H%M).scn
   echo "the scene filename is $_scene">>$4
   echo "start to restore current scene">>$4
   tar -czvf $3/$_scene $2 >>$4
   if [[ $? -eq 0 ]] ; then
      echo "the scene has been restored successfully,the scene file is $_scene">>$4
     echo "scene has been restored finished!">>$4
        return 0
   else
    echo "scene has been restored failed!">>$4
   return 0
   fi
}
function crtsnapbak(){
   _snapshot=snapshot.scn$(date +%Y%m%d).$(date +%H%M).snp
   _ssd=snapshot.scn$(date +%Y%m%d)
   echo "the snapshot name is $_snapshot">>$4
   echo  "start to create snapshot">>$4
   if [[ -d /tmp/snapshot ]] ; then
      rm -rf /tmp/snapshot/* >>$4
      mkdir -p /tmp/snapshot/$_ssd>>$4
   else
      mkdir -p /tmp/snapshot/$_ssd >>$4
   fi
   cp -rf $2 /tmp/snapshot/$_ssd>>$4
   tar -czvf $3/$_snapshot /tmp/snapshot/$_ssd/* >>$4
   if [[ $? -eq 0 ]] ; then
 echo "snapshot created successfully,the file is $3/$_snapshot">>$4
        echo "snapshot create finished!">>$4
     return 0
   else
 echo "snapshot created failed!">>$4
  return 1
   fi
}
function restorescene(){
   case $1 in
 tomcat_cn)
      echo "start to restorescene..."
      echo "start to restorescene...">>$4
     rm -rf /usr/local/project/tomcat_cn>>$4
     tar -xzvf $2 -C /usr/local/project/>>$4
     if [[ $? -eq 0 ]] ; then
  echo "restorescene successfully!">>$4
  echo "restorescene successfully!"
  return 0
     else
  echo "restorescene failed!">>$4
  echo "restorescene failed!"
  return 1
     fi
 ;;
 tomcat_en)
      echo "start to restorescene..."
      echo "start to restorescene...">>$4
     rm -rf /usr/local/project/tomcat_en>>$4
     tar -xzvf $2 -C /usr/local/project/>>$4
     if [[ $? -eq 0 ]] ; then
  echo "restorescene successfully!">>$4
  echo "restorescene successfully!"
  return 0
     else
  echo "restorescene failed!">>$4
  echo "restorescene failed!"
  return 1
     fi
 ;;
 *)
     echo "usage : restorescene parameter[tomcat_cn|tomcat_en] source_bak_file destination" 
 ;;
   esac
}
function restoresnap(){
    echo "restoresnap function"     
}

#
 
 
 

#main(string[] args)
_optype=$1
case $_optype in
srv)
  echo "check the status of server running!">>$_logfile
;;
bakngx)
  echo "backup the control file of nginx!">>$_logfile
  echo "backup the control file of nginx!">>$_logfile
  bakngx var1 /usr/local/nginx/conf/nginx.conf $_bkngx $_logfile
  if [[ $? -eq 0 ]] ; then
    echo "control file has been backuped!">>$_logfile
    echo "control file has been backuped!"
    exit 0
  else
    echo "control file has been backuped!">>$_logfile
    echo "control file has been backuped!"
    exit 1
  fi
;;
baktomchn)
   echo "create a image of chinese web site!">>$_logfile
   echo "create a image of chinese web site!"
   baktomchn tomcat_cn /usr/local/project/tomcat_cn $_bktomcn $_logfile
  if [[ $? -eq 0 ]] ; then
    echo "image created !"
    echo "image created !">>$_logfile
    exit 0
  else
    echo "image created !"
    echo "image created !">>$_logfile
    exit 1
  fi
;;
baktomeng)
  echo "create a image of english web site!">>$_logfile
  echo "create a image of english web site!"
  baktomeng  tomcat_en /usr/local/project/tomcat_en $_bktomen $_logfile
  if [[ $? -eq 0 ]] ; then
    echo "image created !"
    echo "image created !">>$_logfile
    exit 0
  else
    echo "image created !"
    echo "image created !">>$_logfile
    exit 1
  fi
;;
bakusrchn)
   echo " backup the datafile of chinese users!">>$_logfile
   baktomchn tomcat_cn /usr/local/project/tomcat_cn $_bktomcn $_logfile
  if [[ $? -eq 0 ]] ; then
    exit 0
  else
    exit 1
  fi
;;
bakusreng)
   echo " backup the datafile of english users!">>$_logfile
  baktomeng  tomcat_en /usr/local/project/tomcat_en $_bktomen $_logfile
  if [[ $? -eq 0 ]] ; then
    exit 0
  else
    exit 1
  fi
;;
storescene)
   echo "protect scene!">>$_logfile
  bakngx var1 /usr/local/nginx/conf/nginx.conf $_bkngx $_logfile
   _sgnngx=$?
   baktomchn tomcat_cn /usr/local/project/tomcat_cn $_bktomcn $_logfile
   _sgntcn=$?
  baktomeng  tomcat_en /usr/local/project/tomcat_en $_bktomen $_logfile
   _sgnten=$?
  if [[ $_sgnngx -eq 0 && $_sgntcn -eq 0 || $_sgnten -eq 0 ]] ; then
    tomcatenglish201308031200.dmpexit 0
  else
    exit 1
  fi
;;
crtsnap)
   echo "create a snapshot!">>$_logfile
   echo "create a snapshot!"
  bakngx var1 /usr/local/nginx/conf/nginx.conf $_bkngx $_logfile
   _sgnngx=$?
   baktomchn tomcat_cn /usr/local/project/tomcat_cn $_bktomcn $_logfile
   _sgntcn=$?
  baktomeng  tomcat_en /usr/local/project/tomcat_en $_bktomen $_logfile
   _sgnten=$?
  if [[ $_sgnngx -eq 0 && $_sgntcn -eq 0 || $_sgnten -eq 0 ]] ; then
    exit 0
  else
    exit 1
  fi
;;
restorescene)
   echo "recovery web system scene!">>$_logfile
   _type=$3
   _env=$(find /home/backup/* -name $2)
   _envp=$(dirname $_env)
   cd $_envp
   #mv $2 dmp.tar.gz
   if [[ $_type = "tomcat_cn" ]] ; then
      restorescene tomcat_cn $2 /usr/local/project/ $_logfile
      _sgntomcn=$?
   else
      restorescene tomcat_en $2 /usr/local/project/ $_logfile
      _sgntomen=$?
   fi
  if [[ $_sngtomcn -eq 0 || $_sgntomen -eq 0 ]] ; then
    exit 0
  else
    exit 1
  fi
;;
restoresnap)
   echo "recovery web system snapshot point!">$_logfile
  if [[ $? -eq 0 ]] ; then
    exit 0
  else
    exit 1
  fi
;;
*)
   echo "check system status!"
#
#this script is used to check www.tisunion.org server.
#
#
echo "=====================================================">>$_logfile
echo "srv : check the status of server running!"
echo "bakngx : backup the control file of nginx!"
echo "baktomchn : create a image of chinese web site!"
echo "baktomeng : create a image of english web site!"
echo "bakusrchn : backup the datafile of chinese users!"
echo "bakusreng : backup the datafile of english users!"
echo ".............................................................">>$_logfile
echo "usage:">>$_logfile
echo "srv : check the status of server running!">>$_logfile
echo "bakngx : backup the control file of nginx!">>$_logfile
echo "baktomchn : create a image of chinese web site!">>$_logfile
echo "baktomeng : create a image of english web site!">>$_logfile
echo "bakusrchn : backup the datafile of chinese users!">>$_logfile
echo "bakusreng : backup the datafile of english users!">>$_logfile
echo ".............................................................">>$_logfile
 
#check the status of nginx
echo "nginx status" >>$_logfile
lsof -i:80>>$_logfile
echo ".....................................................">>$_logfile
echo "tomcat status >$_logfile'>www.tisunion.org">>$_logfile
_pid8080=$(lsof -i:8080 | grep LISTEN | awk '{print $2}')
for _java_pid in $(ps aux | grep java | grep -v grep | awk '{print $2}')
do
   if [[ $_java_pid -eq $_pid8080 ]] ; then
   echo "----->www.tisunion.org:8080 is running!">>$_logfile
   fi
done
echo "#######################tomcat_information#######################">>$_logfile
ps aux | grep java | grep -v grep >>$_logfile
echo "#######################tomcat_information#######################">>$_logfile
echo "">>$_logfile
echo "">>$_logfile
echo "">>$_logfile
echo ".....................................................">>$_logfile
echo "tomcat status >$_logfile'>www.tisunion.com">>$_logfile
_pid8081=$(lsof -i:8081 | grep LISTEN | awk '{print $2}')
for _java_pid in $(ps aux | grep java | grep -v grep | awk '{print $2}')
do
   if [[ $_java_pid -eq $_pid8081 ]] ; then
        echo "------>www.tisunion.com:8081 is running!">>$_logfile
   fi
done
echo "#######################tomcat_information#######################">>$_logfile
ps aux | grep java | grep -v grep >>$_logfile
echo "#######################tomcat_information#######################">>$_logfile
echo "">>$_logfile
echo "">>$_logfile
echo "">>$_logfile
echo ".....................................................">>$_logfile
if [[ $_nflag = "no" ]] ; then
    echo "NFS is not support!"
else
    echo ".............chinese nfs client ..................">>$_logfile
    echo "Chinese Web Site NFS client status ">>$_logfile
    echo "---------------------------------">>$_logfile
     mount | grep "/tomcat_cn/webapps">>$_logfile
     _chkrs=$?
    echo "---------------------------------">>$_logfile
    if [[ $_chkrs -eq 0 ]] ; then
    echo "Chinese Web Site NFS Client Is OK!">>$_logfile
    else
        mount -t nfs 192.168.1.230:/usr/local/project/tomcat_cn/webapps/ROOT/ /usr/local/project/tomcat_cn/webapps/ROOT
        if [[ $? -ne 0 ]] ; then
     echo "Chinese NFS Client Exception!">>$_logfile
     else
    echo "Chinese NFS client start well!">>$_logfile
 fi 
    fi
    echo "">>$_logfile
    echo "">>$_logfile
    echo ".............english nfs client ..................">>$_logfile
    echo "Chinese Web Site NFS client status ">>$_logfile
    echo "---------------------------------">>$_logfile
     mount | grep "/tomcat_en/webapps">>$_logfile
     _chkrs=$?
    echo "---------------------------------">>$_logfile
    if [[ $_chkrs -eq 0 ]] ; then
    echo "English Web Site NFS Client Is OK!">>$_logfile
    else
        mount -t nfs 192.168.1.230:/usr/local/project/tomcat_en/webapps/ROOT/ /usr/local/project/tomcat_en/webapps/ROOT
        if [[ $? -ne 0 ]] ; then
     echo "English NFS Client Exception!">>$_logfile
     else
    echo "English NFS client start well!">>$_logfile
 fi 
    fi
fi
echo ".....................................................">>$_logfile
echo "">>$_logfile
echo "">>$_logfile
echo "">>$_logfile
echo ".....................................................">>$_logfile
;;
esac
exit 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值