diff --git a/icinga_host_notify.py b/icinga_host_notify.py index 79b5a21..eba3ef2 100755 --- a/icinga_host_notify.py +++ b/icinga_host_notify.py @@ -4,42 +4,49 @@ import logging import os from pydbus import SystemBus from gi.repository import GLib +from datetime import datetime import sms_functions def assemble_sms(): + since_date = datetime.fromtimestamp(int(os.environ.get('LASTSTATECHANGE'))) + str_list = [] str_list.append("Icinga {}\n".format(os.environ.get('NOTIFICATIONTYPE'))) str_list.append("{} is {} [{}]\n".format(os.environ.get('HOSTALIAS'), os.environ.get('HOSTSTATE'), os.environ.get('HOSTADDRESS'))) - str_list.append("since {}\n".format(os.environ.get('LASTSTATECHANGE'))) + str_list.append("since {}\n".format(since_date.strftime('%Y-%m-%dT%H:%M:%S'))) str_list.append("Comment: [{}] {}".format(os.environ.get('NOTIFICATIONAUTHORNAME'), os.environ.get('NOTIFICATIONCOMMENT'))) 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.ModemManagerError as err: + logger.error('Error when sending SMS: {0}'.format(e.value)) + else: + success = True -# 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.ModemManagerError as err: - logger.error('Error when sending SMS: {0}'.format(e.value)) - else: - success = True +if __name__ == "__main__": + main()