shell-实战-收集日志入库(mysql)-发送邮件(mail)

  1. backupdb.sh
#!/bin/bash

sql_file=`date +%Y%m%d`.sql
init_sql(){
[ -f "$sql_file" ] && rm -f "$sql_file"
for logfile in `find . -name "*.log" -mtime 0`;
do
    msg=`tail -1 $logfile`
    flat=`echo $msg | cut -d "," -f1`
    mail=`echo $msg | cut -d "," -f7`
    #mail=356664300@qq.com
    if [[ "$flat" != 'true' ]];
    then
        echo $msg | mail -s "数据备份未成功,请检查" "$mail"
    fi
    msg=`echo $msg | awk -F "," '{OFS="+"}{$6="str_to_date(\""$6"\",\"%Y%m%d%H%i\")";print $0}'`
    for i in 1 2 3 4 5 7 8;do
    msg=`echo $msg | awk -F "+" -v var="$i" '{OFS="+"}{$var="\""$var"\"";print $0}'`
    done
    echo "$msg" >> $sql_file
done
sed -i "s/+/,/g" "$sql_file"
sed -i "s/^/insert into backup_report values\(null,/g" "$sql_file"
sed -i "s/$/\);/g" "$sql_file"
}

mysql_insert(){
my_user=root
my_pw=dagasga
my_host=1.1.1.1
my_instance=dfadfag

mysql -u"$my_user" -p"$my_pw" -h"$my_host" -s "$my_instance" < "$1"
}

#init_sql
init_sql && mysql_insert "$sql_file"
  1. 'vim /etc/mail.rc'
# set from=drfung\@qq.com smtp="smtp.exmail.qq.com:465"
# set smtp-auth-user=drfung\@qq.com smtp-auth-password=dfasdfagfa smtp-auth=login
# set ssl-verify=ignore

set from=drfung\@163.com smtp="smtp.163.com"
set smtp-auth-user=drfung\@163.com smtp-auth-password=dfadagg smtp-auth=login
  1. crontab设置,每天6点定时执行
0 6 * * * bash /backuplog/backup_db.sh
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,239评论 2 33
  • 一、项目目标 搭建一个高可用web集群网站 二、项目规划 2.1 ip地址规划 2.2 拓扑图 2.3 相关说明 ...
    夏日之光阅读 4,035评论 0 1
  • Crontab命令使用 crontab 是用来让使用者(用户)在固定时间或固定间隔(即既定时间设置内)执行应用程序...
    garyond阅读 3,812评论 0 1
  • 语言是窗户,或者是墙(傻兔先生) 马歇尔·卢森堡《非暴力沟通》 2017-3-25 提到暴力,一般想到的是身体上的...
    傻兔先生阅读 515评论 0 1
  • 本人参加#漫步青春#征文活动,作者:肖玉业,本人承诺,文章内容原创,且未在其他平台发布。 驻足于最美好的年华 曾经...
    c0da57a1f1c4阅读 283评论 0 0