четверг, 5 апреля 2012 г.

Отправка SMS с сервера через sms шлюз smsc.ru


Недавно для системы мониторинга мне приспичило сделать sms оповещение.
Поскольку сервер мониторинга лежит в Америке использовать usbмодем нет ни какой возможности, по этому выбор пал на sms шлюз в интернете.

Я решил воспользоваться услугами http://smsc.ru.

У них сравнительно не дорогие цены, и удобное API

Всё что нужно для использования, это зарегистрироваться, оплатить счёт, заполнить поля логина, пароля и номера телефона или телефонов. 
Учтите чтобы лог писался файл /var/log/sms.log должен иметь права на запись для пользователя от которого вы запускаете скрипт.



Все параметры которые вы передадите скрипту будут восприняты как тело сообщения.

Пример commands файла для nagios /etc/nagios3/commands.cfg






Enhanced by Zemanta

6 комментариев:

  1. А вы не подскажите случайно, почему я делаю все по вашей инструкции, но получаю ошибку в логе:

    [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 доходит с этим текстом приходит (то есть скрипт отрабатывает свое)

    ОтветитьУдалить
  2. скорее всего ты выставил пермишн на исполнение не для всех пользователей.

    попробуй поставить разрешение следующей коммандой
    chmod 755 /etc/nagios3/sms_send

    ОтветитьУдалить
  3. Спасибо! Это действительно так.
    А Вы случайно не знаете, как изменить скрипт, что бы номера телефонов брались из contants.cfg, из переменной pager ?
    Что бы можно было разным номерам делать разные типы нотификаций и задавать разные расписания.

    ОтветитьУдалить
    Ответы
    1. конечно это просто

      перед объявлением переменных вам нужно проинкдудить contants.cfg
      это можно сделать командой

      source /путь/к/contants.cfg
      либо
      . /путь/к/contants.cfg

      обычно я пользуюсь первым вариантом поскольку это более наглядно

      далее вы можете просто присвоить переменной ${_CEL} значение вашей переменной.
      это будет выглядеть так:

      _CEL=${pager}
      или так если у вас хэш
      _CEL=${pager[@]}

      это будет работать при условии если переменной pager присвоены переменные следующим образом
      pager=79000000001
      или так
      pager=( 79000000001 79000000002 )

      Удалить
    2. Это не работает.
      В contants.cfg нельзя задавать перемененные через "=", да и сам файл не инклюдится.

      Удалить
  4. можешь в секции пользователя под 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


    соответственно из него ты можешь запустить и скрипт отправки с любыми параметрами, или просто смёрджить их, как тебе будет удобнее

    ОтветитьУдалить