FreeBSD下通过smartcl和sendEmail实现硬盘健康监控通知

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注