Help Linux - до свидания! См. Новости проекта

Вы находитесь здесь: start » kb » nagios-sms


|

Дополнительно

 Creative Commons

SMS-уведомления Nagios используя мобильный телефон

Использование мобильного телефона для SMS-уведомлений полезно в том случае, когда некоторые из уведомлений являются критически важными, как, например, выход кондиционера из строя или повышение влажности.

Подразумевается использование сим-карты с корпоративным тарифом (дабы деньги на телефоне не кончились неожиданно).

Для решения нашей задачи мы можем подключить телефон к серверу по bluetooth, com или usb. В качестве ПО мы будем использовать два скрипта: один из них умеет отправлять sms, второй проверяет статус мобильной сети. Если мобильная сеть недоступна, то Nagios отправляет сообщение на email об этом.

Оба скрипта написаны на языке Python и используют библиотеку Gammu для подключения к телефону.

check_sendsms.py - проверка статуса сети

check_sendsms.py
#!/usr/bin/env python
 
import gammu
import sys
 
# Create state machine object
sm = gammu.StateMachine()
 
# Read /etc/gammurc
sm.ReadConfig()
 
# Connect to phone
sm.Init()
 
# Reads network information from phone
netinfo = sm.GetNetworkInfo()
 
# Print information
print 'State: %s' % netinfo['State']
if netinfo['State'] != "HomeNetwork":
        sys.exit(2)

sendsms.py - отправка sms

sendsms.py
#!/usr/bin/env python
 
import gammu
import sys
 
if len(sys.argv) != 3:
    print 'Usage: sendsms.py number1[,number2][...] "message"'
    sys.exit(1)
 
# we are going to send first 160 characters only
text_message=sys.argv[2][:160]
 
# connect to phone
sm = gammu.StateMachine()
# Read /etc/gammurc                                                                                                           
sm.ReadConfig()
sm.Init()
 
# send messages
for phone_number in sys.argv[1].split(','):
    sms_message = {'Text': text_message, 'SMSC': {'Location': 1}, 'Number': phone_number}
    try:
        sm.SendSMS(sms_message)
    except:
        print "Sorry, I can't send message to %s" % phone_number

Несколько комментариев

  • Скрипт sendsms.py в качестве первого параметра принимает номера телефонов в виде +7xxxxxxxxxx через запятую, и в качестве второго текст сообщениея. Кроме того, SMS-сообщение урезается до 160-ти символов, дабы не усложнять систему использованием Multi Part SMS и не увеличивать стоимость таких уведомлений.
  • Примеры команд отправки уведомлений Nagios по sms
    # 'notify-service-by-sms' command definition
    define command{
            command_name    notify-service-by-sms
            command_line    /etc/_orga/nagios/nagios-sms/sendsms.py $CONTACTPAGER$ "Nagios - $NOTIFICATIONTYPE$ : $HOSTALIAS$/$SER
    VICEDESC$ is $SERVICESTATE$ ($SERVICEOUTPUT$)"
            }
    
    # 'notify-host-by-sms' command definition
    define command{
            command_name    notify-host-by-sms
            command_line    /etc/_orga/nagios/nagios-sms/sendsms.py $CONTACTPAGER$ "Nagios - $NOTIFICATIONTYPE$ : Host $HOSTALIAS$
     is $HOSTSTATE$ ($HOSTOUTPUT$)"
            }
  • Пример команды проверки статуса сети
    # 'check_sendsms' command definition
    define command{
            command_name    check_sendsms
            command_line    $USER1$/check_sendsms.py
    }
  • /etc/gammurc для bluetooth будет выглядеть следующим образом
    [gammu]
    port = /dev/rfcomm0
    connection=at19200