17 марта 2016

Правильная отправка оповещений Zabbix через SMS

В сети много инструкций по настройке отправки оповещений мониторинга через СМС. Сам заббикс умеет отправлять сообщения напрямую через подключенный USB свисток или Serial модем. Но, т.к. заббикс не умеет отправлять сообщения на русском языке, лучше использовать скрипт отправки. Но и тут есть несколько подводных камней.

Ниже правильный скрипт отправки.




Не буду описывать процесс установки gammu на сервер и настройки оповещений в заббиксе. Об этом много уже написано в этих ваших интернетах. Приведу лишь лист скрипта который:

1. В случае наличия русских букв в сообщении отправляет его в юникоде и обрезает длину сообщения до 70 символов.
2. Иначе обрезает сообщение до 170 символов.

В случае если сообщение не обрезать и оно длиннее допустимой длины, USB свисток, в большинстве случаев, зависает.

#!/bin/bash

LOGFILE="/var/log/zabbix/zabbix-sms.log"

MOBILE_NUMBER=`echo "$1" | sed s#\s##`
CHECKUNI=`echo "$3" | grep -Eo "[А-Яа-яЁё]*" | wc -l`

if [ $CHECKUNI -eq 0 ];
then
echo >>${LOGFILE}
echo "echo ${3:0:159} | /usr/bin/sudo /usr/bin/gammu --sendsms TEXT ${MOBILE_NUMBER}" >>${LOGFILE}
echo "${3:0:159} " | /usr/bin/sudo /usr/bin/gammu --sendsms TEXT "${MOBILE_NUMBER}" 1>>${LOGFILE} 2>&1

else
echo >>${LOGFILE}
echo "echo ${3:0:69} | /usr/bin/sudo /usr/bin/gammu --sendsms TEXT ${MOBILE_NUMBER} -unicode" >>${LOGFILE}
echo "${3:0:69}" | /usr/bin/sudo /usr/bin/gammu --sendsms TEXT "${MOBILE_NUMBER}" -unicode 1>>${LOGFILE} 2>&1

fi