背景:在内网zabbix监控搭配短信猫使用中,发现有告警短信发送失败的情况。根据业务和日志分析得出,有其他设备同时使用短信猫,导致短信猫设备被占用,进而告警短信发送失败。
解决办法:加入告警短信发送结果检测功能,如果发现短信发送失败则休眠5秒(可调整),再次尝试发送短信,循环3次(可调整)。
脚本如下:
脚本放置路径和名称,根据zabbix_server的配置文件来存放和命名。
#!/bin/bash
#By 王刚
#Date 20190711
#SMS with gnokii
PATH=/bin:/sbin/:/usr/bin:/usr/sbin:/usr/local/bin/
export LANG=en_US.UTF-8
LOGFILE='/zabbix_tmp/zabbix_sms.log'
DT=$(date +%F' '%T)
i=1
echo "***************************START:$DT************************************" >> $LOGFILE
echo 'Recipient='$1'' >> $LOGFILE
echo 'Subject='$2'' >> $LOGFILE
echo 'Message='$3'' >> $LOGFILE
echo `` >> $LOGFILE
MOBILE_NUMBER=`echo "$1"`
# Log it
echo 'Send Command:' >> $LOGFILE
echo 'echo -e $3 | sudo /usr/local/bin/gnokii --sendsms $MOBILE_NUMBER ' >> $LOGFILE
echo `` >> $LOGFILE
# Send it
echo 'Sending Process:' >> $LOGFILE
echo -e "$3" | sudo /usr/local/bin/gnokii --sendsms "$MOBILE_NUMBER" 1>>$LOGFILE 2>&1
#checking sms_send result.Try 3 times,if send sms failed.
while [ $? -ne 0 ] && [ $i -le 3 ];do
sleep 5
let i++
echo -e "$3" | sudo /usr/local/bin/gnokii --sendsms "$MOBILE_NUMBER" 1>>$LOGFILE 2>&1
done
echo `` >> $LOGFILE
#EOF
DT=$(date +%F' '%T)
echo "***************************STOP:$DT************************************" >> $LOGFILE
echo -e '\n' >> $LOGFILE