# # cron.py # # List the logged (executed) cron jobs and their commands (uses syslog file) # # NOTE: This file is now deprecated in favour of the newer journald mechanism # used in cron-journald.py. This parser is still functional but is slower and # has less features. Please switch over if possible. # import re from logparse.formatting import * from logparse.util import readlog from logparse import config from logparse.load_parsers import Parser from logparse.load_parsers import Parser class Cron(Parser): def __init__(self): super().__init__() self.name = "cron" self.info = "List the logged (executed) cron jobs and their commands (uses static syslog file)" self.deprecated = True self.successor = "cron_journald" def parse_log(self): logger.warning("NOTE: This cron parser is now deprecated. Please use cron-journald if possible.") logger.debug("Starting cron section") section = Section("cron") matches = re.findall('.*CMD\s*\(\s*(?!.*cd)(.*)\)', readlog(config.prefs.get("logs", "cron"))) num = len(matches) commands = [] for match in matches: commands.append(str(match)) logger.info("Found " + str(num) + " cron jobs") jobs_data = Data(str(num) + " cron jobs run") section.append_data(jobs_data) if (num > 0): logger.debug("Analysing cron commands") cmd_data = Data("Top cron commands") cmd_data.items = ("`{0}`".format(x) for x in commands) cmd_data.orderbyfreq() cmd_data.truncl(config.prefs.getint("logparse", "maxcmd")) section.append_data(cmd_data) logger.info("Finished cron section") return section