exec-notify/execNotify.py

60 lines
1.5 KiB
Python
Raw Normal View History

2020-12-06 13:18:32 +01:00
#!/usr/bin/env python3
from sys import argv
import socket
import exec, mail, config
def main():
prevMailError = checkPrevError()
success = executeCommand()
if prevMailError:
tryToInform()
if not prevMailError or not success:
exit(1)
else:
exit(0)
def executeCommand() -> bool:
if len(argv) < 2:
return True
else:
keys = ['command', 'status', 'stderr', 'stdout']
code, stdout, stderr = exec.execute(argv[1:])
values = [str(argv[1:]), str(code), stderr, stdout]
BODY = ''
for key, value in zip(keys, values):
BODY += '=== {} ===\n{}\n'.format(key, value)
print(BODY)
if code != 0:
hostname = socket.gethostname()
SUBJECT = '{} | {}'.format(hostname, str(argv[1:]))
mail.sendMailOrWriteToFile(SUBJECT=SUBJECT, BODY=BODY)
return False
def checkPrevError():
return config.getErrorFile().exists()
def tryToInform():
"""
Try to inform user via mail about previous error(s) that could not be sent to him before.
Maybe this time sending of an email works ;)
"""
SUBJECT = '{} | Some mails not sent!'.format(socket.gethostname())
BODY = 'Please check the file {} for mails which could previously not be sent to you!\n' \
'Note: You may delete the file after reading it ;)'.format(
config.getErrorFile())
mail.sendMail(SUBJECT=SUBJECT, BODY=BODY)
if __name__ == '__main__':
main()