diff --git a/icinga_host_notify.py b/icinga_host_notify.py index eba3ef2..e7577e4 100755 --- a/icinga_host_notify.py +++ b/icinga_host_notify.py @@ -22,7 +22,7 @@ def main(): logfile = "/opt/sms/sms.log" FORMAT = '%(asctime)-15s %(message)s' logging.basicConfig(format=FORMAT,filename=logfile,level=10) - logger = logging.getLogger('observiumsms') + logger = logging.getLogger('icingasms') # check param smsrcpt = os.environ.get('USERMOBILE') @@ -43,6 +43,8 @@ def main(): try: # Contact ModemManager, unlock SIM and send SMS to emergency numbers sms_functions.send_sms([ smsrcpt ], smsstring) + except sms_functions.SIMError as err: + logger.exception('SIM Error when sending SMS') except sms_functions.ModemManagerError as err: logger.error('Error when sending SMS: {0}'.format(e.value)) else: diff --git a/observium_sms.py b/observium_sms.py index 8c63e48..7aef27c 100755 --- a/observium_sms.py +++ b/observium_sms.py @@ -1,9 +1,11 @@ #!/usr/bin/python3 import logging +import time import os from pydbus import SystemBus from gi.repository import GLib +from datetime import datetime import sms_functions def assemble_sms(): @@ -13,15 +15,39 @@ def assemble_sms(): str_list.append("{}".format(os.environ.get('OBSERVIUM_DURATION'))) return ''.join(str_list) -# Setup logging -logfile = "/opt/sms/sms.log" -FORMAT = '%(asctime)-15s %(message)s' -logging.basicConfig(format=FORMAT,filename=logfile,level=10) -logger = logging.getLogger('observiumsms') +def main(): + # Setup logging + logfile = "/opt/sms/sms.log" + FORMAT = '%(asctime)-15s %(message)s' + logging.basicConfig(format=FORMAT,filename=logfile,level=10) + logger = logging.getLogger('observiumsms') + + # check param + smsrcpt = os.environ.get('USERMOBILE') + if not smsrcpt: + logger.error('No SMS number given') + raise Exception('No SMS number given for message') + + # Assemble SMS + smsstring = assemble_sms() + logger.info("Sending SMS: %s", smsstring) + + success = False + retries = 0 + max_retries = 3 + + while not success and retries < max_retries: + retries += 1 + try: + # Contact ModemManager, unlock SIM and send SMS to emergency numbers + sms_functions.send_sms([ smsrcpt ], smsstring) + except sms_functions.SIMError as err: + logger.exception('SIM Error when sending SMS') + except sms_functions.ModemManagerError as err: + logger.error('Error when sending SMS: {0}'.format(e.value)) + time.sleep(6) + else: + success = True -# Assemble SMS -smsstring = assemble_sms() -logger.info("Sending SMS: %s", smsstring) - -# Contact ModemManager, unlock SIM and send SMS to emergency numbers -sms_functions.send_sms(, smsstring) +if __name__ == "__main__": + main() diff --git a/sms_functions.py b/sms_functions.py index 9be00d1..bdd6fed 100644 --- a/sms_functions.py +++ b/sms_functions.py @@ -24,13 +24,6 @@ class SIMError(ModemManagerError): def __str__(self): return repr(self.value) -def assemble_sms(): - str_list = [] - str_list.append("Observium {}\n".format(os.environ.get('OBSERVIUM_TITLE'))) - str_list.append("{} [{}]\n".format(os.environ.get('OBSERVIUM_ENTITY_NAME'), os.environ.get('OBSERVIUM_ENTITY_DESCRIPTION'))) - str_list.append("{}".format(os.environ.get('OBSERVIUM_DURATION'))) - return ''.join(str_list) - def get_modem(): # Retry for 5 seconds and give the modems time retries = 0