simple shell script for running awstats

Greg Rundlett greg at buzgate.org
Mon Jun 30 11:18:39 EDT 2003


I use awstats to report on my server logs.

I missed a couple days and wanted to go back and generate the full
history in chronological order (AWStats requirement).  I have a local
copy of all my log files in compressed .gz format, and due to the fact
that I use rsync with cron to copy them off my live site, I do not want
to convert them all to uncompressed files locally.  That plus the fact
that awstats can read from gzip if done properly.

I wrote a short shell script to try to run awstats in chronological
order (see below)

I found out that even when you supply the -logfile='' parameter on the
command line, that the config file must still have a valid value for
logFile, so I set that manually to be the first log file that I have. 
In subsequent loops, that data should be ignored as 'old records'.

I also found that even though backticks work on the command line to
gunzip the log, it didn't work in bash shell.  So I tried to use another
variable assignment to hold the contents of the uncompressed log file. 
This is probably a bad idea, because it will take up all memory, so I
guess I need to modify the script to write a temporary file, and then
remove it, or otherwise figure out how to get the pipe to work.

Since I was not able to get the script to work, I would appreciate any
comments on how to do this properly.


#!/bin/bash

for n in /var/log/httpd/www*.gz
do
  /path/to/my/cgi-bin/awstats.pl -config=www.buzgate.org -update
-logfile=`gzip -d <$n |`
  echo "processing $n"
  sleep 3m
done

echo "All log files processed successfully."


-- 
Greg Rundlett
Sr. Internet Systems Architect
Knowledge Institute
creators of the Business Utility Zone Gateway
at www.buzgate.org
(603) 642-4720
greg.rundlett at buzgate.org




More information about the gnhlug-discuss mailing list