定期统计某种数据,并把统计结果自动mail发出

分类:shell编程 阅读:73461 次

把统计结果自动mail发出,用到了mutt,mutt安装很简单:yuminstallmutt,安装后就可以使用。

mutt确实是个好东西,可以不启动sendmail或postfix的情况下发邮件,同时比系统自带的mail好用多了。

在linux5下mutt的语法是:

echo"hello" | mutt-atest.txt-s"date"admin@test.com

正文附件主题收件人

在linux6下mutt的语法是

echo"hello" | mutt-atest.txt-s"date"--admin@test.com

正文附件 主题收件人

查看mutt帮助:mutt-h

修改发件人信息(为了避免root@主机名.主机域名这种发件人形式当做垃圾邮件)

在需要发邮件的用户下

建立以下文件

vi~/.muttrc

setenvelope_from=yes

set

setrealname="yourname"

setuse_from=yes

#如果收到的邮件乱码,设置以下信息
setcharset="utf-8"
setrfc2047_parameters=yes

定期统计的存储过程略。

以下是利用shell实现把统计结果自动发出的脚本:

#!/bin/bash
source/home/oracle/.bash_profile
cd/home/oracle/zhangwz/
rm-rflog

sqlplus-szhangwz/******<<EOF>>log
setfeedoff

--执行一下过程,把结果放到表losscall中
execp_losscall;
--把losscall结果放到1.txt中
setlines400;
setpages9000;
spool1.txt
selectrownumsn,losscall.*fromlosscall;
spooloff;
exit
EOF

filename=`date+%Y%m%d-%H%M`
sed'1d'1.txt>>$filename.csv
rm-rf1.txt

hour=`date|cut-c18-20`
if[$hour-eq9]
then
echo"XX,您好:
附件是昨天16:30到今天8点的呼损电话。"|mutt-a$filename.csv-s"呼损电话"zhangwz@xx.net
elif[$hour-eq13]
then
echo"XX,您好:
附件是今天8:00到今天12:00的呼损电话。"|mutt-a$filename.csv-s"呼损电话"zhangwz@xx.net
else
echo"XX,您好:
附件是今天12:00到今天16:30的呼损电话。"|mutt-a$filename.csv-s"呼损电话"zhangwz@xx.net
fi

rm-rf*.csv