【问       题】:snmp服务无故自动停止,人工不能及时的发现,造成系统无法被正常的监控

【解决思路】:通过脚本实现服务异常的情况下自动开启服务,确保系统被正常的监控

【脚本内容】

#!/bin/bash

A=`service snmpd status |awk '{print $2}'`
B=`netstat -puln | grep ":161 "`
C=`service snmpd status |awk '{print $4}'|cut  -c9-14`
if [ "$A = 停止" ];then
         /etc/init.d/snmpd start
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>" >> /var/log/check_snmpd.log
echo "snmpd start at [`date +"%Y-%m-%d %H:%M:%S"`]"   >> /var/log/check_snmpd.log
elif [ "$B" = "" ];then
         /etc/init.d/snmpd start
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>" >> /var/log/check_snmpd.log
echo "snmpd start at [`date +"%Y-%m-%d %H:%M:%S"`]"   >> /var/log/check_snmpd.log
elif [ "$C = unused" ];then
        /etc/init.d/snmpd start
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>" >> /var/log/check_snmpd.log
echo "snmpd start at [`date +"%Y-%m-%d %H:%M:%S"`]"   >> /var/log/check_snmpd.log
fi
exit 0

 

当然变量A,B和C会根据系统linux发行版本的不同而稍微有差异的,请大家根据实际的需要修改