shell+html+div+css实现数据库冷备文件检查

 目前生产有一台数据库冷备服务器,数据库备份每天通过rsync传到该机上,为了方便检查是否冷备正常,就利用有限的知识弄了个页面显示(可怜大学只学了一下可怜的asp.net 2.0),实现的方式是shell+html。写这个脚本的时候shell也是刚学,那时连加邮件、短信报警都没,囧!,现在回头看那个脚本,自己都觉得很搞笑,不知道大家有没有这种感觉...幸好现在后知后觉,努力自学pythoning...

先看下最终效果图:

效果图

效果图2

效果图3

脚本内容:

 
 
  1. -rwxr-xr-x 1 root root   96 2012-02-19 bottom.sh 
  2. -rwxr-xr-x 1 root root 3554 02-02 16:36 CheckBackup.sh 
  3. -rwxr-xr-x 1 root root  802 2012-02-20 head.sh 
  4. -rwxr-xr-x 1 root root  865 12-22 12:10 oldlist.sh 

脚本介绍:

 
 
  1. [root@localhost CheckBackup]# cat bottom.sh  
  2. #!/bin/bash 
  3. #输出html底部信息 
  4. main() 
  5.  echo "</table>" 
  6.  echo "</div>" 
  7.  echo "</body>" 
  8. main 

 
 
  1. [root@localhost CheckBackup]# cat CheckBackup.sh  
  2. #!/bin/bash 
  3.  
  4. #time:   2012-02-17 
  5. #author: reed 
  6. #func:   生产数据库备份检查 
  7.  
  8. #define 
  9. #脚本存放路径 
  10. ShellPath=/usr/BAK-database/CheckBackup 
  11. #页面存放处 
  12. DPath=/usr/apache-tomcat-6.0.32/webapps/ROOT/ShowCheckBackup 
  13. [ ! -d $DPath ] && mkdir -p $DPath 
  14. #生产的主文件名 
  15. FileName=ShowCheckBackup.html 
  16. #前一天的文件名 
  17. BAKFileName=ShowCheckBackup`date -d"1 day ago" +%y%m%d`.html 
  18. #获取当前检查日期 
  19. CheckDate=`date +'%Y-%m-%d_%H:%M:%S'` 
  20. #数据库备份的目录 
  21. FilePath=/usr/BAK-database 
  22. #当前备份的文件名 
  23. CurrentFile=`date +%y%m%d`.sql.tar.gz 
  24. #CurrentFile=120218.sql.tar.gz 
  25.  
  26. #备份前一天的备份信息 
  27. if [ ! -f $ShellPath/$BAKFileName ];then 
  28.   mv $ShellPath/$FileName $ShellPath/$BAKFileName 
  29.   cp -r $ShellPath/$BAKFileName $DPath 
  30. fi 
  31.  
  32. #检查备份情况函数(主函数) 
  33. CheckBackup() 
  34.  echo -e "<tr>" 
  35.  #echo -e "<td><span>$CheckDate</span></td>" 
  36.  cd $FilePath/$1 
  37.  # 注:如果以后要新增系统,分别在后面加上相应的选项 
  38.  case $1 in 
  39.    'WEBP') 
  40.      db_name='前置数据库';; 
  41.    'WEBP-ZJ') 
  42.      db_name='前置数据库(浙江)';; 
  43.    'ecard') 
  44.      db_name='汇卡数据库';; 
  45.    'dbebs') 
  46.      db_name='企业E卡数据库';; 
  47.    'tas') 
  48.      db_name='转账通系统数据库';; 
  49.    'oracle') 
  50.      db_name='清算系统数据库';; 
  51.    'monitor') 
  52.      db_name='反洗钱系统数据库';; 
  53.    'order') 
  54.      db_name='客户端前置数据库';; 
  55.    'GUOANSP') 
  56.      db_name='增值平台数据库';; 
  57.    'dg77') 
  58.      db_name='三合一商户管理系统';; 
  59.    'youyicheng') 
  60.      db_name='优易城';; 
  61.  esac 
  62.  fsize=`ls -tl |grep "$2$CurrentFile"|awk '{print $5}'` 
  63.  if [ ! -f $2$CurrentFile ] || [ $fsize -lt 1000 ];then 
  64.    echo -e "<td colspan="4" id='td1'>文件[<span id='span2'>$2$CurrentFile</span>]不存在!数据库[<span id='span2'>$db_name</span>]备份出现异常,请检查!</td>" 
  65.    #发报警短信 
  66.    $ShellPath/info_takeok.sh "$db_name备份异常,请检查" &>/dev/null 
  67.  else 
  68.    #输出数据库名称 
  69.    echo -e "<td><span>$db_name</span></td>" 
  70.    #获取数据库目录大小 
  71.    dirsize=`du -sh $FilePath/$1|awk '{print$1}'` 
  72.    echo -e "<td><span>$dirsize</span></td>" 
  73.    #输出备份文件名 
  74.    echo -e "<td><span>$2$CurrentFile</span></td>" 
  75.    #获取文件大小 
  76.    fsize=`ls -thl |grep "$2$CurrentFile"|awk '{print $5}'` 
  77.    #输出文件大小  
  78.    echo -e "<td><span>$fsize</span></td>" 
  79.    echo -e "<td><span id='span1'>正常</span></td>" 
  80.    echo -e "</tr>" 
  81.    #输出所在分区空间 
  82.    #dsize=`df -kh /usr/` 
  83.    #echo -e "<tr>" 
  84.    #echo -e "<td  colspan="5">$dsize</td>" 
  85.    #echo -e "</tr>" 
  86.  fi 
  87.  
  88. #输入参数,检查每个数据库备份情况 
  89. #注:第一个参数为备份的数据库目录,第二个参数为备份的文件名头 
  90. #如:浙江前置的数据库备份目录为WEBP-ZJ,文件名为WEBP120218.sql.tar.gz,则输入参数WEBP-ZJ和WEBP 
  91. Check() 
  92.  #打印html文件头部信息 
  93.  $ShellPath/head.sh                 >  $ShellPath/$FileName 
  94.  
  95.  CheckBackup WEBP WEBP             >>  $ShellPath/$FileName 
  96.  CheckBackup WEBP-ZJ WEBP          >>  $ShellPath/$FileName 
  97.  CheckBackup ecard ecard           >>  $ShellPath/$FileName 
  98.  CheckBackup dbebs dbebs           >>  $ShellPath/$FileName 
  99.  CheckBackup tas tas               >>  $ShellPath/$FileName 
  100.  CheckBackup oracle oracle_bak     >>  $ShellPath/$FileName 
  101.  CheckBackup monitor monitor       >>  $ShellPath/$FileName 
  102.  CheckBackup order client          >>  $ShellPath/$FileName 
  103.  CheckBackup GUOANSP GUOANSP       >>  $ShellPath/$FileName 
  104.  CheckBackup dg77 dg77             >>  $ShellPath/$FileName 
  105.  CheckBackup youyicheng ecshop     >>  $ShellPath/$FileName 
  106.  
  107.  #打印html文件尾部信息 
  108.  $ShellPath/bottom.sh              >>  $ShellPath/$FileName 
  109.  #输出往期备份列表页面 
  110.  $ShellPath/oldlist.sh 
  111. Check 
  112.  
  113. #复制打印出的文件到TOMCAT工程,显示到页面上 
  114. CopyFile() 
  115.  cp -r $ShellPath/$FileName $DPath 
  116.  cp -r $ShellPath/css.css $DPath 
  117. CopyFile 

 
 
  1. [root@localhost CheckBackup]# cat head.sh  
  2. #!/bin/bash 
  3.  
  4. #获取当前时间 
  5. CheckDate=`date +'%Y-%m-%d %H:%M:%S'
  6. CheckDay=`date +%A` 
  7.  
  8. #输出html文件头 
  9. main() 
  10.  echo "<body>" 
  11.  echo "<head>" 
  12.   echo "<title>汇卡生产数据库冷备检查</title>" 
  13.   echo "<link href="css.css" rel="stylesheet" type="text/css" />" 
  14.  echo "</head>" 
  15.  echo "<body>" 
  16.   echo "<div id='div1'>" 
  17.   echo "<h1>汇卡生产数据库冷备检查</h1>" 
  18.   echo "<table >" 
  19.    echo "<tr ><td colspan="5" id='td1'>检查日期:$CheckDate($CheckDay)</td></tr>" 
  20.    echo "<tr><td colspan="5" ><a href='OldList.html' target='_blank'>>>查看往期备份</a></td></tr>" 
  21.    echo "<tr id='tr2'>" 
  22.     #echo "<td>检查日期</td>" 
  23.     echo "<td>数据库名称</td>" 
  24.     echo "<td>当前备份目录大小</td>" 
  25.     echo "<td>当前备份文件名</td>" 
  26.     echo "<td>当前备份文件大小</td>" 
  27.     echo "<td>当前备份状态</td>" 
  28.    echo "</tr>" 
  29. main 

 
 
  1. [root@localhost CheckBackup]# cat oldlist.sh  
  2. #!/bin/bash 
  3.  
  4. SavePath=/usr/apache-tomcat-6.0.32/webapps/ROOT/ShowCheckBackup 
  5. cd $SavePath 
  6. #获取目录大小 
  7. #SaveFile=`ls -tl |grep "ShowCheckBackup"|awk '{print $9}'
  8. SaveFile=`ls -t |grep Show` 
  9. FilePath=/usr/BAK-database 
  10. OldListFile=OldList.html 
  11.  
  12. #输出往期备份页面 
  13. main() 
  14.  echo "<body>" 
  15.  echo "<head>" 
  16.   echo "<title>汇卡生产数据库冷备检查[往期备份列表]</title>" 
  17.   echo "<link href="css.css" rel="stylesheet" type="text/css" />" 
  18.  echo "</head>" 
  19.  echo "<body>" 
  20.   echo "<div id='div1'>" 
  21.   echo "<h1>汇卡生产数据库冷备检查</h1>" 
  22.   echo "<table>" 
  23.   echo "<tr >" 
  24.   echo "<td id='td1' colspan="2">往期备份情况</td></tr>" 
  25.   for SFile in $SaveFile;do 
  26.    echo "<tr>" 
  27.    echo "<td><a href='$SFile' target='_blank'>$SFile</a></td>" 
  28.    echo "</tr>" 
  29.   done  
  30.  echo "</table>" 
  31.  echo "</div>" 
  32.  echo "</body>" 
  33. main > $FilePath/$OldListFile 
  34. cp -r $FilePath/$OldListFile $SavePath/ 

CSS文件:

 
 
  1. [root@localhost CheckBackup]# cat css.css  
  2. #div1,table 
  3.  margin:0 auto
  4.  text-align:center
  5. #tr2
  6.         background:#09F
  7.         font-weight:bold
  8.         color:#FFF;} 
  9. #td1
  10.         #font-size:18px
  11.         font-weight:bold
  12.         color:#F00;} 
  13. #td2{         
  14.         #font-size:24px
  15.         font-weight:bold
  16.         color:#F00;} 
  17. #span1 
  18.  font-weight:bold
  19.  color:#0F0
  20. #span2 
  21. {  
  22.  font-weight:bold
  23. table,td{ 
  24.         width:900px
  25.         border-collapse:collapse
  26.         border1px solid #666
  27.         padding:10px 0px 10px 0px;} 
  28.  a 
  29.         text-decoration:none
  30.         list-style:none
  31.         color:#09f
  32.         font-weight:bolder
  33.  
  34.  a:hover 
  35.         text-decoration:underline
  36.         color:#2367ac

最后把CheckBackup.sh脚本写到crontab,每天8点执行

脚本是刚开始学的时候写的,写的很戳,但我觉得思路还是挺不错的,等我学好python,一定要用python+mysql来实现各种DIY。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值