[Pkg-awstats-devel] Bug#580672: awstats: Show error messages from cron jobs (update.sh and buildstatic.sh)

Ken Neighbors debian3 at ken.nsds.com
Fri May 7 15:56:51 UTC 2010


Package: awstats
Version: 6.9.5~dfsg-2
Severity: wishlist
Tags: patch


The scripts run from the awstats cron job (update.sh and
buildstatic.sh) do not report any errors because stdout is redirected
to /dev/null.  Therefore it is difficult to track down why awstats is
not generating its database files.

Attached is a patch that allows these scripts to report the error
message in an email from cron whenever the awstats.pl program exits
with a non-zero status.

Detail: TMPFILE is used to record the output of awstats and
awstats_buildstaticpages.pl (from both stdout and stderr).  If the
return status of awstats/awstats_buildstaticpages.pl is nonzero, then
an error occurred and the content of TMPFILE is printed to stderr to
show up in a cron email report.

Note that a failure of awstats.pl/awstats_buildstaticpages.pl due to a
bad config file will now no longer stop it from processing additional
config files; update.sh/buildstatic.sh will continue to run
awstats.pl/awstats_buildstaticpages.pl on other config files.  This
feature has both good and bad consequences: an error in a single
config file will not interrupt processing of the remaining config
files (good); but an error in awstats.local.conf (which is included in
all config files) will generate a repeated error message for multiple
config files (bad).  I think the good outweighs the bad, but if you
think that update.sh/buildstatic.sh should stop after the first error,
then you can add "exit 1" after "cat $TMPFILE >&2" in both scripts.

-- System Information:
Debian Release: 5.0.4
  APT prefers stable
  APT policy: (500, 'stable'), (50, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.26-2-686 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages awstats depends on:
ii  perl                     5.10.0-19lenny2 Larry Wall's Practical Extraction 

Versions of packages awstats recommends:
ii  libnet-xwhois-perl            0.90-3     Whois Client Interface for Perl5

Versions of packages awstats suggests:
pn  apache2 | httpd            <none>        (no description available)
pn  libgeo-ipfree-perl         <none>        (no description available)
pn  libnet-dns-perl            <none>        (no description available)
pn  libnet-ip-perl             <none>        (no description available)
ii  liburi-perl                1.35.dfsg.1-1 Manipulates and accesses URI strin

-- no debconf information
-------------- next part --------------
>From cf0fa60b4d7279d6dc3deae071a0ff9555823e40 Mon Sep 17 00:00:00 2001
From: Ken Neighbors <ken at nsds.com>
Date: Wed, 28 Apr 2010 09:54:58 -0700
Subject: Show error messages from cron jobs (update.sh and buildstatic.sh).

---
 debian/buildstatic.sh |   12 +++++++++---
 debian/update.sh      |    9 +++++++--
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/debian/buildstatic.sh b/debian/buildstatic.sh
index 91dd4d9..9f41cbc 100755
--- a/debian/buildstatic.sh
+++ b/debian/buildstatic.sh
@@ -16,6 +16,7 @@ BUILDSTATICPAGES=/usr/share/awstats/tools/awstats_buildstaticpages.pl
 
 cd /etc/awstats
 
+TMPFILE=`mktemp /tmp/awstats.XXXXXXXXXX`
 for c in awstats \
          `/bin/ls -1 awstats.*.conf 2>/dev/null | \
           /bin/sed 's/^awstats\.\(.*\)\.conf/\1/'`
@@ -24,11 +25,16 @@ do
   m=`date +%m`
   mkdir -p /var/cache/awstats/$c/$Y/$m/
   AL=${AWSTATS_LANG:-en}
-  $BUILDSTATICPAGES \
+  if ! $BUILDSTATICPAGES \
     -config=$c \
 	-year=$Y \
 	-month=$m \
 	-lang=$AL \
 	-staticlinksext=${AL}.html \
-	-dir=/var/cache/awstats/$c/$Y/$m/
-done >/dev/null
+	-dir=/var/cache/awstats/$c/$Y/$m/ >$TMPFILE 2>&1
+  then
+    # an error occurred
+    cat $TMPFILE >&2
+  fi
+done
+rm -f $TMPFILE
diff --git a/debian/update.sh b/debian/update.sh
index bd49d5d..11a8e03 100755
--- a/debian/update.sh
+++ b/debian/update.sh
@@ -14,9 +14,14 @@ AWSTATS=/usr/lib/cgi-bin/awstats.pl
 
 cd /etc/awstats
 
+TMPFILE=`mktemp /tmp/awstats.XXXXXXXXXX`
 for c in awstats \
          `/bin/ls -1 awstats.*.conf 2>/dev/null | \
           /bin/sed 's/^awstats\.\(.*\)\.conf/\1/'`
 do
-  $AWSTATS -config=$c -update
-done >/dev/null
+  if ! $AWSTATS -config=$c -update >$TMPFILE 2>&1; then
+    # an error occurred
+    cat $TMPFILE >&2
+  fi
+done
+rm -f $TMPFILE
-- 
1.5.6.5



More information about the Pkg-awstats-devel mailing list