shell脚本:
#!/bin/bash
export PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
date="`date +%Y-%m-%d` 00:00:00"
txt="数据存放文件"
mysql='数据库IP'
user='数据库账号'
passwd='数据库密码'
database="库名"
mailA='收件人1邮箱地址'
mailB='收件人2邮箱地址'
mail1='抄送人1邮箱地址'
mail2='抄送人2邮箱地址'
echo -e "本邮件为系统自动定时发送,详细结果如下:" > $txt
mysql -u$user -p$passwd -h $mysql $database -e "SELECT d.SERIAL_NUMBER AS 序列号,d.SE_SN,d.NETWORK_STATUE AS 网络状态,d.ELECTRIC AS 电量,d.HEART_TIME AS 心跳更新时间,h.house_full_name AS 绑定房间,d.HARDWARE_VERSION AS 硬件版本,d.HARDWARE_SOFTWARE AS 软件版本 FROM device AS d LEFT JOIN house_device AS h ON d.DEVICE_ID=h.DEVICE_ID WHERE (d.ORG_ID=36 OR d.org_id=59) AND (d.heart_time < '$date' OR LEFT(d.ELECTRIC,LENGTH(d.ELECTRIC)-1)<50)" >> $txt
echo -e "" >> $txt
echo '备注:***' >> $txt
/bin/mail -s "邮件标题-`date +%Y%m%d`" -c $mail2 -c $mail1 $mailB $mailA < $txt
难点:
- datetime类型的条件参数要用单引号,用双引号会查不到数据;
- 文本类型的百分数数据的大小比较,如上述:查找电量低于50%的数据;
- 邮件抄送的实现。
效果图: