巡检服务器的shell脚本

#!/bin/bash  
    #admin:spirits  
      
    #CPU检测**  
    echo "date '+%Y年%m月%d日 %H:%M:%S' 数据库服务器硬件情况开始巡检。。。"  
      
    top -bn 6 >>top  
      
    grep -n “%id” top >> newtop  
      
    grep -n “zombie” top >> insisttop  
      
    top1=cat  newtop   | awk '{print $5}' | sed -n 4p | sed 's/%//g' |sed 's/id,//g'  
    top2=cat  newtop   | awk '{print $5}' | sed -n 5p | sed 's/%//g' |sed 's/id,//g'  
    top3=cat  newtop   | awk '{print $5}' | sed -n 6p | sed 's/%//g' |sed 's/id,//g'  
      
    top4=cat insisttop | awk '{print $10}' | sed -n 2p | sed 's/%//g' |sed 's/id,//g'  
      
    #echo “top4:$top4”  
      
    if [ $top4 -gt 0 ]  
      
    then   
        echo "date '+%Y年%m月%d日 %H:%M:%S' 采集处理服务器上出现僵尸进程,巡检程序将自动kill该进程,如需人工确认请执行命令top后再执行ps -A -ostat,ppid,pid,cmd | grep -e '1'来确认是否将僵尸进程杀死"  >> ./newreport.txt  
      
        ps -A -o stat,ppid,pid,cmd | grep -e ‘2’ | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲' | xargs kill …{top1:0:2}  
    b= t o p 2 : 0 : 2       c = {top2:0:2}       c= top2:0:2   c={top3:0:2}  
      
    echo “top1: $a”  
    echo “top2: $b”  
    echo “top3: c "                         i f [   c"                      if [   c"            if[ a    -lt  20  ]&&[  KaTeX parse error: Expected 'EOF', got '&' at position 16: b    -lt  20  ]&̲&[  c    -lt  20  ]    ; then  
      
        echo  "date '+%Y年%m月%d日 %H:%M:%S' 数据库服务器CPU占用率不正常,top取到的值是 t o p 1 , top1, top1,top2,$top3,小于参考值20,请及时处理!” >> ./newreport.txt  
      
    else  
      
      echo “CPU占用率正常!”   
      
    fi  
      
    rm -rf top  
      
    rm -rf newtop  
      
    rm -rf insisttop  
      
    #***内存检测  
    free1=free -g | awk '{print $4}' | sed -n 3p | sed 's/%//g' |sed 's/t//g'  
      
    total=free -g | awk '{print $2}' | sed -n 2p | sed 's/%//g' |sed 's/t//g'  
      
    canshu=0.2  
      
    tempd=echo $total $canshu |awk '{print $1*$2}'  
      
    biaozhun=${tempd%.
}  
      
    if [ f r e e 1   − l e   free1  -le   free1 le biaozhun  ]  ;  then   
    echo "date '+%Y年%m月%d日 %H:%M:%S'  数据库服务器内存占用率过高,free -g取到的值是 f r e e 1 , 小 于 等 于 参 考 值 free1,小于等于参考值 free1,biaozhun,请及时处理!" >> ./newreport.txt  
      
    else  
      
    echo “内存占用率正常!”  
      
    fi  
      
    #****文件系统巡检  
    df1=df -h | awk '{print $5}' | sed -n 2p | sed 's/%//g'  
    df2=df -h | awk '{print $5}' | sed -n 3p | sed 's/%//g'  
    df3=df -h | awk '{print $5}' | sed -n 4p | sed 's/%//g'  
    df4=df -h | awk '{print $5}' | sed -n 5p | sed 's/%//g'  
    df5=df -h | awk '{print $5}' | sed -n 6p | sed 's/%//g'  
      
     if [ $df1 -gt  90 ]||[ $df2  -gt  90 ]||[ $df3 -gt  90 ]||[ $df4 -gt  90 ]||[ d f 5 − g t   90 ] ; t h e n                   e c h o " ‘ d a t e ′ + df5 -gt  90 ] ; then                  echo "`date '+%Y年%m月%d日 %H:%M:%S'` 数据库服务器磁盘占用率过高!df -h取到的值是 df5gt 90];then         echo"date+df1, d f 2 , df2, df2,df3, d f 4 , df4, df4,df5,参考值是90,若其中一个或一个以上大于参考值,请及时处理!" >> ./newreport.txt  
      
    else  
      
        echo “磁盘占用率正常!”  
      
    fi  
      
    #磁盘IO性能巡检  
    iostat -x 2 5 >>iostat.txt  
      
    scvtm1=" cat  iostat.txt  | awk '{print $11}' | sed -n 16p | sed 's/%//g'"  
      
    scvtm2="cat  iostat.txt  | awk '{print $11}' | sed -n 17p | sed 's/%//g'"  
      
    scvtm3="cat  iostat.txt  | awk '{print $11}' | sed -n 18p | sed 's/%//g'"  
      
    scvtm4="cat  iostat.txt  | awk '{print $11}' | sed -n 19p | sed 's/%//g'"  
      
    scvtm13="cat  iostat.txt  | awk '{print $11}' | sed -n 25p | sed 's/%//g'"  
      
    scvtm6=" cat  iostat.txt  | awk '{print $11}' | sed -n 26p | sed 's/%//g'"  
      
    scvtm7="cat  iostat.txt  | awk '{print $11}' | sed -n 27p | sed 's/%//g'"  
      
    scvtm8="cat  iostat.txt  | awk '{print $11}' | sed -n 28p | sed 's/%//g'"  
      
    scvtm9="cat  iostat.txt  | awk '{print $11}' | sed -n 34p | sed 's/%//g'"  
      
    scvtm10="cat  iostat.txt  | awk '{print $11}' | sed -n 35p | sed 's/%//g'"  
      
    scvtm11="cat  iostat.txt  | awk '{print $11}' | sed -n 36p | sed 's/%//g'"  
      
    scvtm12="cat  iostat.txt  | awk '{print $11}' | sed -n 37p | sed 's/%//g'"  
      
      
      
    util1="cat  iostat.txt  | awk '{print $12}' | sed -n 16p | sed 's/%//g'"  
      
    util2="cat  iostat.txt  | awk '{print $12}' | sed -n 17p | sed 's/%//g'"  
      
    util3="cat  iostat.txt  | awk '{print $12}' | sed -n 18p | sed 's/%//g'"  
      
    util4="cat  iostat.txt  | awk '{print $12}' | sed -n 19p | sed 's/%//g'"  
      
    util5="cat  iostat.txt  | awk '{print $12}' | sed -n 25p | sed 's/%//g'"  
      
    util6=" cat  iostat.txt  | awk '{print $12}' | sed -n 26p | sed 's/%//g'"  
      
    util7="cat  iostat.txt  | awk '{print $12}' | sed -n 27p | sed 's/%//g'"  
      
    util8="cat  iostat.txt  | awk '{print $12}' | sed -n 28p | sed 's/%//g'"  
      
    util9="cat  iostat.txt  | awk '{print $12}' | sed -n 34p | sed 's/%//g'"  
      
    util10="cat  iostat.txt  | awk '{print $12}' | sed -n 35p | sed 's/%//g'"  
      
    util11="cat  iostat.txt  | awk '{print $12}' | sed -n 36p | sed 's/%//g'"  
      
    util12="cat  iostat.txt  | awk '{print $12}' | sed -n 37p | sed 's/%//g'"  
      
    #1/2/3/4
 
      
    maxa=echo "$scvtm1 $scvtm2 $scvtm3 $scvtm4" | awk '{for(i=1;i<=NF;i++)$i>a?a=$i:a}END{print a}'  
      
    #13/6/7/8/
 
      
    maxb=echo "$scvtm13 $scvtm6 $scvtm7 $scvtm8" | awk '{for(i=1;i<=NF;i++)$i>a?a=$i:a}END{print a}'  
      
    #*****9/10/11/12  
      
    maxc=echo "$scvtm9 $scvtm10 $scvtm11 $scvtm12" | awk '{for(i=1;i<=NF;i++)$i>a?a=$i:a}END{print a}'  
      
    #util1/2/3/4
 
      
    maxd=echo "$util1 $util2 $util3 $util4" | awk '{for(i=1;i<=NF;i++)$i>a?a=$i:a}END{print a}'  
      
      
    #***util5/6/7/8  
      
    maxe=echo "$util5 $util6 $util7 $util8" | awk '{for(i=1;i<=NF;i++)$i>a?a=$i:a}END{print a}'  
      
    #**util9/10/11/12  
      
    maxf=echo "$util9 $util10 $util11 $util12" | awk '{for(i=1;i<=NF;i++)$i>a?a=$i:a}END{print a}'  
      
    #做判断
 
    m= m a x a : 0 : 1               n = {maxa:0:1}              n= maxa:0:1       n={maxb:0:1}  
      
    h= m a x c : 0 : 1               k = {maxc:0:1}              k= maxc:0:1       k={maxd:0:1}  
      
    l= m a x e : 0 : 1               o = {maxe:0:1}              o= maxe:0:1       o={maxf:0:1}  
      
      
    if [  $m -ge 15 ]&&[ $k -ge 99 ]&&[ k − l t 100 ] k -lt 100 ] klt100] [   [   [ n -ge 15 ]&&[ $l -ge  99 ]&&[ KaTeX parse error: Expected 'EOF', got '&' at position 12: l -lt 100 ]&̲&[  h -ge 15]&&[ $o -ge 99 ]&&[ $o -lt 100 ]  
      
    then  
      
        echo "date '+%Y年%m月%d日 %H:%M:%S'  数据库服务器磁盘IO存在瓶颈,请及时处理!" >> ./newreport.txt  
      
    else  
      
       echo “磁盘IO正常!”  
      
    fi  
      
    rm -rf ./iostat.txt  
      
    #***********网络连通性检测  
      
    network1=ping -s 4096 -c 5  135.0.51.15 | awk '{print $6}' | sed -n 9p | sed 's/%//g' |sed 's/t//g'  
      
    if [ n e t w o r k 1 − g t 0 ]               t h e n                     e c h o " ‘ d a t e ′ + network1 -gt 0 ]              then                  echo "`date '+%Y年%m月%d日 %H:%M:%S'` 数据库服务器到该目标IP之间的网络不稳定,ping取到的值是 network1gt0]       then          echo"date+network1,大于参考值是0,系统存在风险,请及时处理!"  >> ./newreport.txt  
      
    else   
      
       echo “网络连通性正常!”  
      
    fi  
      
    echo "date '+%Y年%m月%d日 %H:%M:%S' 数据库服务器硬件情况巡检结束!"


  1. Zz ↩︎

  2. Zz ↩︎

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值