#!/usr/bin/python3 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('LONGDATETIME'))) str_list = [] str_list.append("Icinga {}\n".format(os.environ.get('NOTIFICATIONTYPE'))) str_list.append("{} [{}] is {}\n".format(os.environ.get('SERVICEDESC'), os.environ.get('HOSTALIAS'), os.environ.get('SERVICESTATE'))) str_list.append("at {}\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) 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('icingasms') # 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)) else: success = True if __name__ == "__main__": main()