diff --git a/etc/logwatch/scripts/services/cfddns b/etc/logwatch/scripts/services/cfddns new file mode 100644 index 0000000..ffd9bea --- /dev/null +++ b/etc/logwatch/scripts/services/cfddns @@ -0,0 +1,39 @@ +#!/bin/bash + + +### Script to parse cfddns.sh log file and display important information +### +### Levels: +### Levels are defined in this script as 0-4, 5 & 5+ +### Levels 0-4 (same): Basic information reporting +### Reports only critical information such as errors, update successes and ### failures. +### Level 5: Recommended information reporting level +### Adds informational messages such as the hostnames being updated and the ### IP address being used for that update. +### Level 5+ (same): Verbose logging +### This will just reprint the entire log. This should only be used when ### checking the actual logfile is not possible or you prefer looking at it ### via Logwatch for some reason. Note: ANSI colouring is removed by this ### script to faciliate Logwatch conversion to HTML. Therefore, viewing +### that actual log file is highly recommended instead of via this level of +### reporting in Logwatch. + + +### Create temporary file for assembling log entries +cfddnsTmpFile=$(mktemp -p "${LOGWATCH_TEMP_DIR}") + +### Assemble the temp file according to desired Logwatch detail level +if [ "$LOGWATCH_DETAIL_LEVEL" -lt 5 ]; then + # get error, success and status messages + { grep '\-- \[ERROR\]' ; grep '\-- \[SUCCESS\]' ; \ + grep '\-- \[STATUS\]' ; } >> "$cfddnsTmpFile" +elif [ "$LOGWATCH_DETAIL_LEVEL" -eq 5 ]; then + # get error, success, status and info messages + { grep '\-- \[ERROR\]' ; grep '\-- \[SUCCESS\]' ; \ + grep '\-- \[STATUS\]' ; grep '\-- \[INFO\]' ; } >> "$cfddnsTmpFile" +elif [ "$LOGWATCH_DETAIL_LEVEL" -gt 5 ]; then + cat +fi + +### Strip ANSI escape codes and sort entries according to timestamps +sed -e 's,\x1B\[[0-9;]*[a-zA-Z],,g' "${cfddnsTmpFile}" | sort -n + +### Clean-up and exit +rm -f "${cfddnsTmpFile}" > /dev/null 2>&1 +exit 0