环境RHEL 5
首先安装sendEmail
1.下载SendEmail安装包
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
2.安装SendEmail
tar zxvfsendEmail-v1.56.tar.gz
cdsendEmail-v1.56
cp sendEmail/usr/local/bin
chmod 0755/usr/local/bin/sendEmail
3.使用测试
/usr/local/bin/sendEmail –f abc1@test.cn –t own@test.cn –s mail.test.cn –u “owen test”–xu abc1@test.cn –xp 123456 –m owen-test
提示
Apr 19 14:39:21localhost sendEmail[10158]: Email was sent successfully!
发送成功!
参数解释:
-f 表示发送者的邮箱
-t 表示接收者的邮箱
-s 表示SMTP服务器的域名或者ip
-u 表示邮件的主题
-xu 表示SMTP验证的用户名
-xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)
-m 表示邮件的内容
-cc 表示抄送
-bcc 表示暗抄送
sendEmail 安装部分参照的是以下链接
http://lihuipeng.blog.51cto.com/3064864/658408
1.编辑查询SQL脚本
cd /bak/bat/
vi daily_count.sql
添加上以下内容
col每日统计 format a20;
select '时间:' || to_char( sysdate -1 , 'yyyy-mm-dd') 每日统计 from dual ;
select count (*) 当日业务 from
productA a
where a .dep= '1001' and
to_char(a .time, 'yyyy-mm-dd')=to_char (sysdate- 1 ,'yyyy-mm-dd' );
select count (*) 总业务量 from productA a
where a .dep = '1001'
and to_char (a.time,'yyyy-mm-dd' )< to_char ( sysdate ,'yyyy-mm-dd' )
2.编辑生成统计结果文件
vi daily_count.sh
#!/bin/bash
DATE=`date -d '-1 days' +"%Y%m%d"`
su - oracle -c "sqlplus testuser/testpasswd"<<EOF
spool /bak/amount/amount_$DATE.txt;
@/bak/bat/daily_count.sql;
spool off;
exit;
3.发送邮件脚本
vi send_d_count.sh
#!/bin/bash
DATE=`date -d '-1 days' +"%Y%m%d"`
sed -i '/SQL/d' /bak/amount/amount_$DATE.txt
sed -i '/^$/d' /bak/amount/amount_$DATE.txt
sed -i 's/^ *//' /bak/amount/amount_$DATE.txt
/usr/local/bin/sendEmail -f henry@testmail.com.cn -t kaka@testmail.com.cn wang@testmail.com.cnxu@testmail.com.cn -cc henry@testmail.com.cn -s mail.testmail.com.cn -u"daily report" -m "daily report" -xu henry@testmail.com.cn-xp 10086 -a "/bak/cert_amount/amount_$DATE.txt"
-- daily_count.sh 和send_d_cout.sh内容本来是放在同一个文件里的,但是在执行完daily_count.sh 里exit后后面的命令无法执行,故拆分为两个脚本
4.配置定时执行计划
vi /etc/crontab
15 15 * * * root /bak/bat/daily_count.sh&& /bak/bat/send_d_count.sh
#每日下午3点十五分准时发送给指定邮箱