#
# cron.py
#
-# List the logged (executed) cron jobs and their commands
-# TODO: also output a list of scheduled (future) jobs
+# 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 ..formatting import *
from ..util import readlog, resolve
from .. import config
+from .. import util
import logging
logger = logging.getLogger(__name__)
def parse_log():
+
+ 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['logs']['cron']))
- num = sum(1 for line in matches)
+ num = len(matches)
commands = []
for match in matches:
commands.append(str(match))
# commands.append([str(match)for match in matches])
#logger.debug("found cron command " + str(commands))
logger.info("Found " + str(num) + " cron jobs")
- subtitle = str(num) + " cron jobs run"
- section.add_data(Data(subtitle))
- if (len(matches) > 0):
- commands = ("`{0}`".format(x) for x in commands)
- commands = orderbyfreq(list(commands))
- commands = truncl(commands, config.prefs['maxcmd'])
- section.add_data(Data("top cron commands", commands))
+ 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['maxcmd'])
+ section.append_data(cmd_data)
+
logger.info("Finished cron section")
return section