zoukankan      html  css  js  c++  java
  • 检查ftp备份数据完整性及短信告警的shell脚本

    发布:thebaby   来源:net     【  
    检查ftp备份数据完整性及短信告警的shell,有需要的朋友可以参考下。
    该脚本实现如下的功能:

    对远程备份到ftp服务器的数据完整性及是否ftp到该服务器进行了检查,如果没有及时备份到该ftp服务器则脚本会触发短信告警功能模块实现短信的告警,最后由于ftp服务器的空间有限,笔者在征求相关人员已经后制定了90天之前的数据进行删除的策略并在脚本中也实现了该功能。
    现将该脚本分享出来,供大家学习参考。
     

    复制代码代码如下:

    #!/usr/bin/ksh
    #---------------------------------------------------------
    # scriptname: 
    #       mon the data backup
    # version:
    #       1.2
    # description: 
    #       - if you have "/opt/mon/backup/my.lock",the monitor is unavailability ;
    #       - if find service error ,send message to admin.      
    # method:
    # author:
    #       create by fengzhanhai
    # notes:
    #       - the return variant is correct equal 0,error equal 1.
    #---------------------------------------------------------

    #script conf---------------------------------------------
    Mon_Path="/backup/autobk/mon"
    Mon_log="$Mon_Path/backup.log"
    SMS_Server="your sms ip or fetion robot"
    SMS_Send="$Mon_Path/sendsms"
    Admin_Mobile="$Mon_Path/youmobilelist"
    SMS_From=`hostname`
    SMS_Header="Your-Mysql--DataBackup-"
    Service_IP="your ftp server"

    #check the lock file------------------------------------
    getLock()
    {
             if [ -f "$Mon_Path/$Service_Name.lock" ];then
                       return 1
             else
                      return 0
             fi
    }

    #writer the message to log--------------------------
    logwriter()
    {
             if [ ! -d `dirname $Mon_log` ]; then
                       mkdir -p `dirname $Mon_log`
             fi
             echo `date "+%Y-%m-%d %H:%M:%S"` : $1 >> $Mon_log
    }

    #send  error sms to admin---------------------
    sendSmsToAdmin()
    {
    CurTime=`date "+%Y-%m-%d %H:%M:%S"`
             if [ $# -eq 1 ]; then
                       if [ ! -z "$1" ];then
                                tmpTime=`date "+%Y%m%d%H%M%S"`
                                for mobile in `cat $Admin_Mobile`
                                do
                                         $SMS_Send -h $SMS_Server $mobile "$SMS_Header$1 not update-$tmpTime-$SMS_From"
                                done
                       fi
             else
                       logwriter "call sendSmsToAdmin argus error"
             fi
    }

    #check the lock file------------------------------------
    getlastfile()
    {
            find $1 -name "$2`date "+%Y%m%d"`*.$3"|grep $2
            if [ $? = 0 ];then
                       return 0
             else
                       return 1
             fi
    }

    # main ---------------

    #检查锁文件
    logwriter "backup check begin"
    getLock
    if [ $? = 0 ];then
            #检查当日文件是否存在
            getlastfile /eip_backup/autobk/yourdb/mysql yourdata tgz
            if [ $? != 0 ];then
                 logwriter "yourdb not update!"
                 #发送告警短信
                 sendSmsToAdmin "yourapp"
             fi
             logwriter "yourapp  check over."
             #清理90天前的备份数据
             find /eip_backup/autobk/yourdb/mysql -name "yourdb*.tgz" -ctime +90 -print -exec rm {} ;
             logwriter "delete yourdb file over."
    logwriter "backup check over"

  • 相关阅读:
    Session的使用与Session的生命周期
    Long-Polling, Websockets, SSE(Server-Sent Event), WebRTC 之间的区别与使用
    十九、详述 IntelliJ IDEA 之 添加 jar 包
    十八、IntelliJ IDEA 常用快捷键 之 Windows 版
    十七、IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架
    十六、详述 IntelliJ IDEA 创建 Maven 项目及设置 java 源目录的方法
    十五、详述 IntelliJ IDEA 插件的安装及使用方法
    十四、详述 IntelliJ IDEA 提交代码前的 Code Analysis 机制
    十三、IntelliJ IDEA 中的版本控制介绍(下)
    十二、IntelliJ IDEA 中的版本控制介绍(中)
  • 原文地址:https://www.cnblogs.com/linuxnotes/p/3417360.html
Copyright © 2011-2022 走看看