Separated function for assembling SMS and the main program

This commit is contained in:
root 2017-02-04 12:30:34 +01:00
parent 1745ad0be4
commit 6334bbda32

View File

@ -4,42 +4,49 @@ import logging
import os import os
from pydbus import SystemBus from pydbus import SystemBus
from gi.repository import GLib from gi.repository import GLib
from datetime import datetime
import sms_functions import sms_functions
def assemble_sms(): def assemble_sms():
since_date = datetime.fromtimestamp(int(os.environ.get('LASTSTATECHANGE')))
str_list = [] str_list = []
str_list.append("Icinga {}\n".format(os.environ.get('NOTIFICATIONTYPE'))) 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("{} 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'))) str_list.append("Comment: [{}] {}".format(os.environ.get('NOTIFICATIONAUTHORNAME'), os.environ.get('NOTIFICATIONCOMMENT')))
return ''.join(str_list) return ''.join(str_list)
# Setup logging def main():
logfile = "/opt/sms/sms.log" # Setup logging
FORMAT = '%(asctime)-15s %(message)s' logfile = "/opt/sms/sms.log"
logging.basicConfig(format=FORMAT,filename=logfile,level=10) FORMAT = '%(asctime)-15s %(message)s'
logger = logging.getLogger('observiumsms') logging.basicConfig(format=FORMAT,filename=logfile,level=10)
logger = logging.getLogger('observiumsms')
# check param # check param
smsrcpt = os.environ.get('USERMOBILE') smsrcpt = os.environ.get('USERMOBILE')
if not smsrcpt: if not smsrcpt:
logger.error('No SMS number given') logger.error('No SMS number given')
raise Exception('No SMS number given for message') raise Exception('No SMS number given for message')
# Assemble SMS # Assemble SMS
smsstring = assemble_sms() smsstring = assemble_sms()
logger.info("Sending SMS: %s", smsstring) logger.info("Sending SMS: %s", smsstring)
success = False success = False
retries = 0 retries = 0
max_retries = 3 max_retries = 3
while not success and retries < max_retries: while not success and retries < max_retries:
retries += 1 retries += 1
try: try:
# Contact ModemManager, unlock SIM and send SMS to emergency numbers # Contact ModemManager, unlock SIM and send SMS to emergency numbers
sms_functions.send_sms([ smsrcpt ], smsstring) sms_functions.send_sms([ smsrcpt ], smsstring)
except sms_functions.ModemManagerError as err: except sms_functions.ModemManagerError as err:
logger.error('Error when sending SMS: {0}'.format(e.value)) logger.error('Error when sending SMS: {0}'.format(e.value))
else: else:
success = True success = True
if __name__ == "__main__":
main()