shell脚本查询mysql查询结果自动发送邮件

最近公司要实现一个自动统计mysql数据发邮件的功能
采用了shell+sendemail+corntab
下面附代码:

#!/bin/bash
#设置mysql的连接
HOSTNAME="127.0.0.1"
PORT="3306"
USERNAME="xxxx"
PASSWORD="xxxx"
DBNAME="abm"
TABLENAME="abm_audience"
DATE=`date  "+%Y-%m-%d"`

select_sql="SELECT
abm_au.tenant_id,
SUM(CASE
        WHEN abm_au.status = 'DISTRIBUTED'
        AND  DATE_FORMAT(abm_au.update_time,'%Y-%m-%d') >= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 15 DAY),'%Y-%m-%d')
        AND DATE_FORMAT(abm_au.update_time, '%Y-%m-%d') < DATE_FORMAT(NOW(),'%Y-%m-%d')
        THEN 1
        ELSE 0
END) AS distributedCount,
SUM(CASE
        WHEN abm_au.status = 'READY'
        AND DATE_FORMAT(abm_au.created_time,'%Y-%m-%d') >= DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 15 DAY),'%Y-%m-%d')
        AND DATE_FORMAT(abm_au.created_time,'%Y-%m-%d') < DATE_FORMAT(NOW(),'%Y-%m-%d')
        THEN 1
        ELSE 0
END) AS builtCount
FROM abm_audience abm_au LEFT JOIN sso.tenant te ON te.tenant_id = abm_au.tenant_id
WHERE te.tenant_sysname IS NOT NULL AND te.platform_type='MVPD'
GROUP BY abm_au.tenant_id"

#执行mysql
/usr/local/mysql/bin/mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} abm -e "${select_sql}" > $DATE.txt

#设置sendemail
email_reciver=xxxxx@qq.com
email_sender=xxxxx@qq.com
email_username=xxxxx@qq.com
email_password=xxxxx
email_smtphost=smtp.qq.com
email_title="title"
email_content="content"

/usr/local/bin/sendEmail -f ${email_sender} -t ${email_reciver} -s ${email_smtphost} -u ${email_title} -xu ${email_username} -a $DATE.txt -xp ${email_password} -m ${email_content} -o message-charset=utf-8

注意:
1.sendemail,corntrab,mysql安装及环境变量的配置,这里我采用的全路径
2.发送邮箱需要开启pop3/smtp功能
3.不同邮箱可能对垃圾邮件的处理方式不同,这里通过sendmail发的邮件有时候gmail会当成垃圾邮件,而163则不会

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值