Linux shell定时自动发送邮件(远程访问数据库并将结果保存到文件)

用java写了一个图书管理系统,就想着写一个脚本能够判断哪些用户借的书快到期了发一个邮件提醒一下,但是之前没写过shell,顺便练练写shell。

#!/bin/bash
#mysql远程连接IP
host=xxx.xxx.xxx.x
#mysql远程连接帐号
user=library
#mysql远程连接帐号密码
password=library
name=""
email=""
book=""
endtime=""
day=""

#mysql查询结果的保存路径
file=/home/library/email_information.txt

mysql -h$host -u$user -p$password 2>/etc/null << EOF
        use Library;
#查询结果保存在/tmp/email_information.txt文件中
        SELECT Name, Email, BookName, EndTime, datediff(EndTime, curdate()) FROM User, BorrowRecord WHERE State=false AND Id=User into outfile '/tmp/email_information.txt';

EOF
#因为是远程连接,所以查询结果保存的文件保存在远程访问的主机中,这里将结果复制到本机。sshpass是为了直接将要输入的远程主机root帐号密码放到这条命令里,而不用手动输入。
sshpass -p root scp -P514 218.198.32.182:/tmp/email_information.txt /home/library 

while read line
do
        OLD_IFS="$IFS"
        IFS=" "
        arr=($line)
        IFS=$OLD_IFS
        index=0
        for s in ${arr[@]}
        do
                arr[$index]="$s"
                ((index++))
        done
        name="${arr[0]}"
        email="${arr[1]}"
        book="${arr[2]}"
        endtime="${arr[3]}"
        day="${arr[4]}"

        if [ "$day" = "3" ];
           then   echo -e "尊敬的用户 $name 您好:\n \t \t您借阅的 $book 将于 $endtime 到>期,请按时还书!" | mail -s "升达ACM图书管理系统提醒" $email
        elif [ "$day" = "0" ];
           then   echo -e "尊敬的用户 $name 您好:\n \t \t您借阅的 $book 将于 $endtime(今>天) 到期,请及时还书,以免影响您的正常借书。" | mail -s "升达ACM图书管理系统提醒" $email
        fi
        IFS=$OLD_IFS

done < $file

定时自动发送邮件服务使用说明 该软件运行环境需要.Net 3.5支持,Win7系统上可以直接运行. 主要功能可以定时自动发送邮件,发送程序做成服务形式,用户无需登录, 只要电脑是开启状态,就会自动执行发送邮件. 包含的文件, 1.AutoSendMail.exe --设置程序 2.AutoSendMail_Log.txt --存放日志的文本文件. 可自动生成 3.AutoSendMail_Setting.xml --配置文件 4.AutoSendMailService.exe --服务程序 5.InstallUtil.exe --微软的安装服务必须程序 6.tasks.mdb --Access数据库文件,用于存放邮箱内容. 可更改文件 7.安装服务.bat 8.使用说明.txt 9.卸载服务.bat 安装步骤: 第一步:安装服务 运行“安装服务.bat”文件。(需要管理员权限) 第二步:修改配置文件 修改好配置文件AutoSendMail_Setting.xml。确保Access数据库连接正确,每个任务的发送时点,和邮件信息。 每次修改配置文件必需重新启动服务才生效。 第三步:启动服务 a.从服务管理控制台启动服务,运行services.msc命令打开控制台。 b.通过设置程序启动服务。(需要管理员权限) 如果删除服务,则运行“卸载服务.bat”。 接口定义: 每个任务需要在指定的Access数据库里设置一个视图或表,用于存放邮件信息, 字段格式: 第一字段:ID 自动编号 第二字段:收件人 文本类型 第三字段:抄送人 文本类型 第四字段:主题 文本类型 第五字段:内容 备注类型 第六字段:发送次数 数字类型 备注:程序通过ID查找记录,来更新发送次数的值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值