Недавно для системы мониторинга мне приспичило сделать sms оповещение.
Поскольку сервер мониторинга лежит в Америке использовать usbмодем нет ни какой возможности, по этому выбор пал на sms шлюз в интернете.
Я решил воспользоваться услугами http://smsc.ru.
У них сравнительно не дорогие цены, и удобное API.
Всё что нужно для использования, это зарегистрироваться, оплатить счёт, заполнить поля логина, пароля и номера телефона или телефонов.
Учтите чтобы лог писался файл /var/log/sms.log должен иметь права на запись для пользователя от которого вы запускаете скрипт.
Все параметры которые вы передадите скрипту будут восприняты как тело сообщения.
Пример commands файла для nagios /etc/nagios3/commands.cfg
А вы не подскажите случайно, почему я делаю все по вашей инструкции, но получаю ошибку в логе:
ОтветитьУдалить[1334334323] Warning: Attempting to execute the command "/etc/nagios3/sms_send "Host: my.site.ru, State: UP Service TEST222 Description: CRITICAL Time: Fri Apr 13 20:25:23 MSK 2012"" resulted in a return code of 126. Make sure the script or binary you are trying to execute actually exists...
При чем если из консоли выполню:
/etc/nagios3/sms_send "Host: my.site.ru, State: UP Service TEST222 Description: CRITICAL Time: Fri Apr 13 20:25:23 MSK 2012"
то SMS доходит с этим текстом приходит (то есть скрипт отрабатывает свое)
скорее всего ты выставил пермишн на исполнение не для всех пользователей.
ОтветитьУдалитьпопробуй поставить разрешение следующей коммандой
chmod 755 /etc/nagios3/sms_send
Спасибо! Это действительно так.
ОтветитьУдалитьА Вы случайно не знаете, как изменить скрипт, что бы номера телефонов брались из contants.cfg, из переменной pager ?
Что бы можно было разным номерам делать разные типы нотификаций и задавать разные расписания.
конечно это просто
Удалитьперед объявлением переменных вам нужно проинкдудить contants.cfg
это можно сделать командой
source /путь/к/contants.cfg
либо
. /путь/к/contants.cfg
обычно я пользуюсь первым вариантом поскольку это более наглядно
далее вы можете просто присвоить переменной ${_CEL} значение вашей переменной.
это будет выглядеть так:
_CEL=${pager}
или так если у вас хэш
_CEL=${pager[@]}
это будет работать при условии если переменной pager присвоены переменные следующим образом
pager=79000000001
или так
pager=( 79000000001 79000000002 )
Это не работает.
УдалитьВ contants.cfg нельзя задавать перемененные через "=", да и сам файл не инклюдится.
можешь в секции пользователя под email указать переменную phone присвоить ей значение по образу и подобию, и парсить примерно таким скриптом
ОтветитьУдалить#!/bin/bash
cat /etc/nagios3/conf.d/contacts_nagios2.cfg | egrep -v '^#' | tr '\n' ' ' | sed -e 's/define contact/"\n"define contact/g' | sed -e 's/define contactgroup/\ndefine contactgroup/g' > /tmp/sms_pars.log
while read LINE
do
if echo $LINE | grep contact_name 2>&1 > /dev/null
then
echo -n "contact_name "
echo "$LINE" | gawk -F contact_name '{ print $2 }' | awk '{ print $1 }'
echo -n "phone"
echo "$LINE" | gawk -F phone '{ print $2 }' | awk '{ print $1 }'
fi
done < /tmp/sms_pars.log
соответственно из него ты можешь запустить и скрипт отправки с любыми параметрами, или просто смёрджить их, как тебе будет удобнее