On Mon, Apr 21, 2008 at 08:43:22AM +0200, Marc Haber wrote: > On Sun, Apr 20, 2008 at 09:30:33PM -0400, Justin Pryzby wrote: > > I rewrote your patch to use a tempfile instead to reduce code > > duplication. > > I'd rather have a few megs of code grepped twice than using a tempfile. I don't know if I understand exactly what you mean (the code is not grepped but rather the logfile data), but that's otherwise fair. I tested the attached patch just now, with the following changes from your initial copy:
. redirect stderr (twice); . write non-statistic output to stdout (the cronjob pipe), rather than sending a separate mail. . Fix regex: don't escape "." within a bracket expression (it's literal without escaping) Justin
--- exim4-base 2008-04-21 09:21:40.000000000 -0400 +++ /etc/cron.daily/exim4-base 2008-04-21 09:35:53.000000000 -0400 @@ -11,6 +11,7 @@ # checking mechanisms or don't care. E4BCD_DAILY_REPORT_TO="" +E4BCD_DAILY_REPORT_OPTIONS="" E4BCD_WATCH_PANICLOG="yes" E4BCD_PANICLOG_NOISE="" E4BCD_GNUTLS_PARAMS_MAXAGE="14" @@ -34,10 +35,21 @@ # Patches for more sophisticated processing are appreciated via the # Debian BTS. +E4BCD_MAINLOG_NOISE="^[[:digit:][:space:]:-]\{20\}\(\(Start\|End\) queue run: pid=[[:digit:]]\+\|exim [[:digit:].]\+ daemon started: pid=[[:digit:]]\+, \+.*\)$" + if [ -n "$E4BCD_DAILY_REPORT_TO" ]; then - if [ -x "$(command -v eximstats)" ]; then - eximstats </var/log/exim4/mainlog \ - | mail $E4BCD_DAILY_REPORT_TO -s"$(hostname --fqdn) Daily email activity report" + if [ -x "$(command -v eximstats)" ] && [ -x "$(command -v mail)" ]; then + if [ "$(< /var/log/exim4/mainlog grep -v "$E4BCD_MAINLOG_NOISE" 2>/dev/null | wc -l)" -gt "0" ]; then + < /var/log/exim4/mainlog grep -v "$E4BCD_MAINLOG_NOISE" 2>/dev/null | + eximstats $E4BCD_DAILY_REPORT_OPTIONS | + mail $E4BCD_DAILY_REPORT_TO -s"$(hostname --fqdn) Daily e-mail activity report" + else + echo "no mail activity in this interval" + fi + else + echo "The exim4 cron job is configured to send a daily report, but eximstats" + echo "and/or mail cannot be found. Please check and make sure that these two" + echo "binaries are available" fi fi