以下实例从mysql 读取需要监控IP地址列表,通过snmpwalk返回交换机名称,如果不为空说明交换机在线,如果为空说明掉线。然后将交换机状态写入mysql数据库,如果设备不在线则记录告警列表。
本文使用了两个存储过程,大家可以根据自己需要,完成自己的mysql存储过程。
#!/bin/bash
iplist=$(mysql -usnmp -ppasswd -Dsnmp -e "select CONCAT(Community,',',IpAddress) as snmpstr from OLTLIST;")
declare
declare
for ipstr in
ip=${ipstr#*,};
cmd="snmpwalk -v 2c -c "${ipstr/,/' '}" SNMPv2-MIB::sysName.0"
snmpcmd[$ip]=${cmd}
done
for key in ${!snmpcmd[@]}
do
if [[ $key == *\.* ]];then
oltstatus[$key]=$(${snmpcmd[$key]}
fi
done
#insert and update olt status to mysql database
#mysql -usnmp -ppasswd-D snmp -e "use snmp;"
for key in ${!oltstatus[@]}
do
if [ "${#oltstatus[$key]}" -eq 0 ];then
oltstatus[$key]=0
else
oltstatus[$key]=1
fi
mysql -usnmp -ppasswd-Dsnmp <<EOF
call update_unit_onlie_satus('${key}',${oltstatus[$key]});
EOF
done
#man alarm by procedure
mysql -usnmp -ppasswd-Dsnmp <<EOF
call man_alarm();
EOF