#!/usr/bin/python3 import os import errno import re from commands.CmdExit import CmdExit from commands.CmdUpdate import CmdUpdate DIR = os.path.dirname(os.path.realpath(__file__)) CONFIG = { "PipePath": os.path.join(DIR, "../data/cmd-pipe"), "CronFragment": os.path.join(DIR, "../data/cron-fragment.txt"), "Running": True, } # try: # os.mkfifo(PIPE) # except OSError as oe: # if oe.errno != errno.EEXIST: # raise def execute(command): if command == "EXIT": global running running = False elif command == "UPDATE": print("Updating...") stream = os.popen('crontab -l') crontab = stream.read() result = crontab begin = re.search("\s*#\s*BEGIN\(ALERTS\).*", crontab) if begin: result = crontab[:begin.span()[1]] + "\n" end = re.search("\s*#\s*END\(ALERTS\).*", crontab) if end: result += "muahahah\ntest" result += crontab[end.span()[0]:] print(result) else: print("UNKNOWN COMMAND: {0}".format(command)) def main(config): # commandPipe = '' # cronFragment = '' # try: # opts, args = getopt.getopt(argv,"h",["help","pipe=","cron="]) # except getopt.GetoptError: # print 'cron-section-replace --pipe --cron ' # sys.exit(2) # for opt, arg in opts: # if opt in ("-h", "--help"): # print 'cron-section-replace --pipe --cron ' # sys.exit() # elif opt in ("--pipe"): # commandPipe = arg # elif opt in ("--cron): # cronFragment = arg # print(commandPipe) # print(cronFragment) # sys.exit() commands = { "EXIT": CmdExit(config), "UPDATE": CmdUpdate(config) } while config["Running"]: print("Waiting for connection...") with open(config["PipePath"]) as pipe: print("Connection established") while True: cmd = pipe.read().strip() if len(cmd) == 0: break if cmd in commands: commands[cmd].execute() else: print("UNKNOWN COMMAND: {0}".format(cmd)) #execute(data.strip()) if __name__ == "__main__": main(CONFIG)