首页 > 代码库 > nagios检控硬盘健康状态
nagios检控硬盘健康状态
简单脚本实现:
#!/bin/bashDEVICES="sda sdb" #有几块硬盘就写几块SMARTCTL=/usr/sbin/smartctlSMART_TMP_FILE="/opt/nagios/tmp/.smart"for DEV in $DEVICESdo REL=`sudo $SMARTCTL -H /dev/$DEV |egrep -i ‘(Health status|test result)‘ |awk -F: ‘{print $2}‘ |awk ‘{print $1}‘` echo -n "${DEV}:${REL} " >> $SMART_TMP_FILEdone >> /tmp/eeee.log 2>&1egrep -i ‘(FAILED|err)‘ $SMART_TMP_FILERETVAL=$?if [ $RETVAL -ne 0 ]then echo "OK - `cat $SMART_TMP_FILE`" rm -f $SMART_TMP_FILE exit 0else echo "CRITICAL - `cat $SMART_TMP_FILE`" rm -f $SMART_TMP_FILE exit 2fi
脚本很简单,不过要执行起来不容易,root用户执行此脚本,测试一切没问题,可是用nagios用户运行问题就来了
首先是nagios用户没有执行smartctl命令的权限:修改soduers文件
执行visudo
在root ALL=(ALL) ALL下面添加
nagios ALL=(root) NOPASSWD:/usr/sbin/smartctl *
##NOPASSWD可以在脚本执行实不用输入密码
只改了这个还不行,当用nagios用户执行时还是会报错:sudo: sorry, you must have a tty to run sudo
再改:
还是执行visudo命令(当然执行vi /etc/sudoers也完全可以)
找到Defaults requiretty,前面加‘#’注释掉就一切OK了!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。