文档章节

Shell查询数据库,和发送邮件

尤雪萍
 尤雪萍
发布于 2014/04/05 02:10
字数 587
阅读 68
收藏 0

  

sendmail.sh
#!/bin/bash

#################################################################
function getDateStr()
{
echo `date -d "-$1 day" +%Y-%m-%d`
}

#定义配置文件的地址
PROPERTY_FILE="/home/xueping.you/conf/conf.properties"
#数据库
db_name=`sudo cat $PROPERTY_FILE | grep "mysql.host" | awk -F '=' '{print $2}'`
#用户名
db_username=`sudo cat $PROPERTY_FILE | grep "mysql.username" | awk -F '=' '{print $2}'`
#密码
db_password=`sudo cat $PROPERTY_FILE | grep "mysql.password" | awk -F '=' '{print $2}'`
#数据库
db=`sudo cat $PROPERTY_FILE | grep "mysql.database" | awk -F '=' '{print $2}'`
#对账天数
max_day=`sudo cat $PROPERTY_FILE | grep "size_day" | awk -F '=' '{print $2}'`
#存放对账总结果存放文件
reconcile_result=`sudo cat $PROPERTY_FILE | grep "reconcile_result" | awk -F '=' '{print $2}'`
#存放对账详情存放文件 biz_type_diff_ + 1 “酒店直销TTS” 2 “酒店OTATTS” 3 “酒店国际业务” 4 “酒店一口价分销”
reconcile_diff_result='/home/xueping.you/out/biztypediff_'
#查询出来的邮件发送人
sendEmail=`sudo cat $PROPERTY_FILE | grep "sendEmail" | awk -F '=' '{print $2}'`
#定义查询一句

date_str=`getDateStr "$max_day"`
#构建查询语句
select_reconcileResult="select * from reconcile_result where reconcile_ts < '${date_str} 00:00:00';"
#执行查询语句
mysql -s -h $db_name -u$db_username -p$db_password $db -e "$select_reconcileResult" > $reconcile_result

#$1为邮件发送人列表,$2为biztype
function sendmail()
{
if [ -s $reconcile_diff_result$2 ]
then
        from=alert@qunar.com
        #to=`cat $1`
        to="xueping.you@qunar.com"
        echo "<html><body><table border=1>">>mailcontent
        echo "<tr>">>mailcontent
        title=`cat /home/xueping.you/conf/emailformat|grep 'email_title' | awk -F '=' '{print $2}' `
        #分割字符串,变量OLD_IFS存着默认分隔符,IFS存着分隔符,用完之后还原分隔符
        OLD_IFS="$IFS"
        IFS=" "
        arr=($title)
        IFS="$OLD_IFS"
        for titles in ${arr[@]}
        do
                echo "<td>"$titles"</td>">>mailcontent
        done
        echo "</tr>">>mailcontent
        cat $reconcile_diff_result$2 | while read diff_line
        do
                echo "<tr>">>mailcontent
                OLD_IFS="$IFS"
                IFS=" "
                diff_line_arr=($diff_line)
                IFS="$OLD_IFS"
                for diff_item in ${diff_line_arr[@]}
                do
                        echo "<td>"$diff_item"</td>">>mailcontent
                done
                echo "</tr>">>mailcontent
        done
        echo "</table></body></html>">>mailcontent
        #具体邮件发送代码

        #设置邮件发送日期
        email_date=$(date "+%Y-%m-%d_%H:%M:%S")
        #设置邮件标题
        email_subject="对账差异未处理提醒"$email_date
        #发送邮件
        (echo "Subject: $email_subject";echo "From: $from";echo "To: $to";echo "Content-Type: text/html" ;echo `cat mailcontent`;)|/usr/lib/sendmail -t
fi
sudo rm mailcontent
}

#查询出对账总结过对应的差异
while read line
do
        reconcile_id=`echo $line | awk '{print $1}'`
        biztype=`echo $line | awk '{print $2}'`
        mysql -s -h $db_name -u$db_username -p$db_password $db -e "select id , trade_no , order_no,reconcile_ts ,reconcile_op_type , reconcile_direct , trade_amount , biz_type , status from reconcile_diff_detail where reconcile_result_id = '$reconcile_id' and invalid=0;">>$reconcile_diff_result$biztype
        #查询邮件
        mysql -s -h $db_name -u$db_username -p$db_password $db -e "select biz_type,email_address from reconcile_notify_email;">$sendEmail
done<$reconcile_result

#发送邮件的代码
ls /home/xueping.you/out/biztypediff_*>outfile
while read line
do
        biztype=`echo $line | grep 'biztypediff' | awk -F '_' '{print $2}'`
        #生成邮件接收人地址的字符串
        emailTo=''
        cat $sendEmail|grep $biztype | awk '{print $2}' | while read line;do echo $line";";done > readysend
        sendmail "readysend" "$biztype"

done<outfile
sudo rm outfile
sudo rm /home/xueping.you/out/*
sudo rm readysend


© 著作权归作者所有

尤雪萍
粉丝 2
博文 5
码字总数 3132
作品 0
北碚
程序员
私信 提问
Exchange Server邮箱管理

在Exchange的使用过程中,Exchang管理员的主要工作就是新建、移动用户邮箱,处理邮件发送接收问题,备份恢复用户邮件等。可以同时管理一个或者多个邮箱,对邮箱进行禁用,存档管理,本地移动...

技术小胖子
2017/11/14
0
0
系统接口太多?使用Python写一个小小的项目监控,简单方便实用

在公司里做的一个接口系统,主要是对接第三方的系统接口,所以,这个系统里会和很多其他公司的项目交互。随之而来一个很蛋疼的问题,这么多公司的接口,不同公司接口的稳定性差别很大,访问量...

妄心xyx
2018/11/02
0
0
北京红袖添香科技发展有限公司——急聘PHP开发工程师 月薪5000-6000元

1.两年以上PHP开发经验,能够独立编写中等规模PHP应用程序; 2.熟悉Unix/Linux操作系统,熟悉Shell脚本编程及常用Unix管理命令; 3.熟悉HTTP协议及W3C相关互联网规范,熟练掌握XHTML、CSS、D...

hongxiu
2011/02/17
1K
33
雪城大学信息安全讲义 六、输入校验

六、输入校验 原文:Input Validation 译者:飞龙 1 环境变量(隐藏的输入) 环境变量是隐藏的输入。它们存在并影响程序行为。在编程中忽略它们的存在可能导致安全隐患。 PATH IFS PATH=".:$...

apachecn_飞龙
2017/04/22
0
0
pymssql+stmplib组合的一个问题

调试的时候用的是windows 嗯,由于公司的系统每天都要手动查询系统出入站有没有报错,觉得有点烦所以想想就写个脚本来每天自动查询,查询出错误就发邮件到咱的邮箱,没事不用发了。 现在呢,...

chain723
2016/12/01
83
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
9
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
920
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部