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

你可能感兴趣的:(Linux)