用户工具

站点工具


howto:s:smartctl_sendemail

通过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
/data/vhosts/wiki-data/pages/howto/s/smartctl_sendemail.txt · 最后更改: 2011/04/06 22:01 由 harbinbeer