Quick bash script for awstats. Noting beautiful, but having an issue with loop not ocurring. Output only shows that it has performed one loop for name1, it never gets to name2, name3 with the printf's.
#!/bin/bash
awstats_command='perl /var/www/html/awstats/wwwroot/cgi-bin/awstats.pl'
html_path="/var/www/html/awstats/wwwroot"
activelogpath="/logs/web/active"
archivelogpath="/logs/web/archive"
day='date +%Y-%m-%d.%H'
# List of web servers we are processing stats for:
for i in name1 name2 name3
do
if [[ $i = "name1" ]]
then
# Custom reports for name1 contains subdirectory statistics
printf "\nProcessing log files for $i...\n"
/usr/bin/perl /var/www/html/awstats/wwwroot/cgi-bin/awstats.pl -config=name1 -update
printf "done.\n"
printf "\nGenerating .html files for $i...\n"
/var/www/html/awstats/wwwroot/cgi-bin/do.reports $i
$awstats_command -config=$i -output=urldetail:/about/ -staticlinks > $html_path/$i/awstats.$i.about.html
printf "done.\n"
else
printf "\nProcessing log files for $i...\n"
# Will do something when working $i
printf "done.\n"
printf "\nGenerating .html files for $i...\n"
# Will do something when working $i
printf "done.\n"
fi
printf "\nCompressing and archiving log files...\n"
exec /usr/bin/gzip -cv "$activelogpath"/"$i"/*.log > "$archivelogpath"/"$i"/"$(date +%Y%m%d_%H%M%S)".gz
# rm -f $activelogpath/$i/*.log
printf "\nCompleted!\n"
done
exec /usr/bin/gzip -cv "$activelogpath"/"$i"/*.log > "$archivelogpath"/"$i"/"$(date +%Y%m%d_%H%M%S)".gz
exec
replaces the current process with the named program. Execution does not continue past an exec
statement. There's no need for it here. Just call gzip
without it.
gzip -cv "$activelogpath/$i"/*.log > "$archivelogpath/$i/$(date +%Y%m%d_%H%M%S).gz"
There's also no need to write /usr/bin/
, or to leave and re-enter quotes so often.