FreeBSD下通过smartcl和sendEmail实现硬盘健康监控通知
通过smatctl检查硬盘的S.M.A.R.T.状态,并通过sendEmail向管理员发送邮件报告。
安装相关软件
smartctl
smartctl是非常全面的硬盘S.M.A.R.T.检查工具
cd /usr/ports/sysutils/smartmontools/ && make install clean
sendEmail
sendEmail是一款小巧便捷的邮件工具,支持smtp
cd /usr/ports/net/sendemail/&& make install clean && rehash
这2个软件安装后均无需额外配置即可实现本文功能
编写脚本
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
##变量根据自己情况修改##
#smtp服务器地址#
smtpadd="smtp.yourmail.com"
#smtp登录用户#
smtpusr="username"
#smtp用户密码#
smtppass="password"
#发件人邮箱#
sender="sneder@yourmail.com"
#收件人邮箱#
rcver="rcver@yourmail.com"
#临时日志,用于记录smartctl输出信息#
tmplog="/tmp/my_disks_smart.log"
#获取主机名,对服务器加以区分#
myhost=`hostname`
##列出本机所有硬盘##
dsks=`geom disk status\
| grep -Ev ‘cd[0-9]|^Name.*’\
| awk ‘{print "/dev/" $1}’`
##查询每个硬盘的S.M.A.R.T.健康简况,并保存在临时日志中##
for i in ${dsks}
do
smartinfo=`smartctl -H ${i}\
| grep -Ev ‘^$|===|^smartctl|^Copyright’`
echo ${i} : ${smartinfo} >> ${tmplog}
done
##通过邮件报告硬盘健康简况##
email_notify=`sendEmail\
-f ${sender}\
-s ${smtpadd}\
-xu ${smtpusr}\
-xp ${smtppass}\
-t ${rcver}\
-u "disks_smart of ${myhost} at $(date +%Y-%m-%d)"\
-o message-file=${tmplog}\
| grep sent\ successfully!`
##发送后的处理,成功即删除临时日志,失败则添加记录##
if [ ! "${email_notify}" ]
then
echo "email send fail" >> ${tmplog}
chmod 600 ${tmplog}
else
rm ${tmplog}
fi
exit 0
给脚本执行权限
加入cron执行
编辑/etc/crontab
@daily root /path/to/your/script
原文链接:http://wiki.freebsdchina.org/howto/s/smartctl_sendemail