用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