ftp备份服务器数据完整性检查并实现短信告警功能的shell分享

分类:shell编程 阅读:60289 次

该脚本实现了对远程备份到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
}

#senderror 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 "yourappcheck 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"