以前のいくつかの投稿には、NagiosでのSMS通知の使用に関するトピックがありました。 今日は、別の通知方法についてお話します。 以下に説明する方法は、前述の方法よりもいくらか信頼性がありますが、いくらかの現金投資も必要です。 一部の通知が重要な場合(エアコンの故障や湿度の上昇など)に役立ちます。
方法は、企業の関税で携帯電話を使用することです(電話のお金が予期せず終了しないように)。
bluetooth、com、またはusbを介してサーバーに物理的に接続します。 ソフトウェアレベルでは、2つのスクリプトを使用します。1つはSMSを送信でき、2つ目はモバイルネットワークのステータスをチェックします。 モバイルネットワークが利用できない場合、nagiosは電子メールを送信します。
両方のスクリプトはpythonで記述されており、gammuライブラリを使用して電話に接続します。
最初のスクリプト: 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)
2番目のスクリプト: sendms.py-実際にSMSを送信する
#!/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
いくつかのコメント
- スクリプトは、msnd.pyを最初のパラメーターとしてカンマで区切られた+ 7xxxxxxxxxxの形式の電話番号を受け入れ、2番目のメッセージテキストとして受け入れます。 さらに、マルチパートSMSを使用してシステムを複雑にしないために、SMSメッセージは160文字に切り捨てられます。
- サンプルnagios SMS通知コマンド
#「notify-service-by-sms」コマンド定義
定義コマンド{
command_name SMSによる通知サービス
command_line /etc/_orga/nagios/nagios-sms/sendsms.py $ CONTACTPAGER $ "Nagios-$ NOTIFICATIONTYPE $:$ HOSTALIAS $ / $ SER
VICEDESC $は$ SERVICESTATE $($ SERVICEOUTPUT $)です
}
#「notify-host-by-sms」コマンド定義
定義コマンド{
command_name notify-host-by-sms
command_line /etc/_orga/nagios/nagios-sms/sendsms.py $ CONTACTPAGER $ "Nagios-$ NOTIFICATIONTYPE $:ホスト$ HOSTALIAS $
は$ HOSTSTATE $($ HOSTOUTPUT $) "
}
- ネットワークステータス確認コマンドの例
# 'check_sendsms'コマンド定義
定義コマンド{
command_name check_sendsms
command_line $ USER1 $ / check_sendsms.py
}
/ etc / bluetoothのgammurcは次のようになります
[ガム]
ポート= / dev / rfcomm0
接続= at19200