shell+html+div+css實現數據庫冷備文件檢查

 目前生產有一臺數據庫冷備服務器,數據庫備份天天經過rsync傳到該機上,爲了方便檢查是否冷備正常,就利用有限的知識弄了個頁面顯示(可憐大學只學了一下可憐的asp.net 2.0),實現的方式是shell+html。寫這個腳本的時候shell也是剛學,那時連加郵件、短信報警都沒,囧!,如今回頭看那個腳本,本身都以爲很搞笑,不知道你們有沒有這種感受...幸虧如今後知後覺,努力自學pythoning...css

先看下最終效果圖:html

效果圖

效果圖2

效果圖3

腳本內容:python

  
  
  
  
  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 

腳本介紹:mysql

  
  
  
  
  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文件:web

  
  
  
  
  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點執行sql

腳本是剛開始學的時候寫的,寫的很戳,但我以爲思路仍是挺不錯的,等我學好python,必定要用python+mysql來實現各類DIY。shell

相關文章
相關標籤/搜索