Ich habe ein Script gefunden zur automatischen Erstellung der Konfigurationsdateien von AwStats.
Nur ist leider ein Fehler bei der Verzeichnisssuche.
Code: Select all
#!/bin/sh
WWWROOT=/var/www/virtual # Pfad zu den WebSeiten
LOGROOT=/var/log/apache2/users # Pfad zu den LogDateien
ETCDIR=/etc/awstats # Konfigurationsverzeichniss von AWSTATS
TMPDIR=/tmp # Pfad zum Tempverzeichniss das benutzt werden soll
LOGPATTERN=MARK # Such Pattern für das LogFile
DIRPATTERN=DIR # Such Pattern für das Directory zum LogFile
CONFTEMPLATE=/etc/awstats/awstats.model.conf # Basiskonfiguration
PID=$$
echo "- Suche Zugriffslogs..."
LOGS=$(find $LOGROOT/ -name *-access.log)
for LOG in $LOGS ; do
FILENAME=$(basename $LOG)
NAME=$(echo $FILENAME | sed 's/-access.log//g')
LOCATION=$(echo $NAME | perl -pe 's/.*.(.*..*)/$1/')
if [ -e $WWWROOT/$LOCATION ] ; then
if [ ! -e $ETCDIR/awstats.$NAME.conf ] ; then
echo "- Erzeuge Konfiguration für $NAME..."
echo "sed 's/$DIRPATTERN/$LOCATION/g;s/$LOGPATTERN/$NAME/g' $CONFTEMPLATE >> /$TMPDIR/$NAME.$PID" | sh
cp -f /$TMPDIR/$NAME.$PID $ETCDIR/awstats.$NAME.conf
rm -f /$TMPDIR/$NAME.$PID
fi
else
if [ ! -e $ETCDIR/awstats.$NAME.conf ] ; then
echo "- Verzeichniss $WWWROOT/$LOCATION konnte nicht gefunden werden (Domain-Alias?), suche Verzeichniss..."
SEARCHLOC=$(echo $LOCATION | sed 's/[.]/_/g')
FOUND=$(find $WWWROOT/ -name $SEARCHLOC)
echo "- Verzeichniss gefunden unter $FOUND"
echo "- Erzeuge Konfiguration für $NAME..."
CUT=$(echo $FOUND | awk -F'[/]' '{ print $3 }')
echo "sed 's|$DIRPATTERN|$CUT|g;s/$LOGPATTERN/$NAME/g' $CONFTEMPLATE >> /$TMPDIR/$NAME.$PID" | sh
cp -f /$TMPDIR/$NAME.$PID $ETCDIR/awstats.$NAME.conf
rm -f /$TMPDIR/$NAME.$PID
fi
fi
doneAber egal ob es gefunden wird oder nicht, wird die Konfigurationsdatei angelegt. (Ausgabe: "Versichniss gefunden unter ", also nicht gefunden)
Kann man es so umschreiben, dass wenn die Suche erfolglos ist, nichts gemacht wird (nur evtl eine Ausgabe á la "Nichts gefunden"). wenn aber die Sucher erfolgreich war soll die Konfigurationsdatei geschrieben werden.
Hier wird gesucht:
Code: Select all
if [ ! -e $ETCDIR/awstats.$NAME.conf ] ; then
echo "- Verzeichniss $WWWROOT/$LOCATION konnte nicht gefunden werden (Domain-Alias?), suche Verzeichniss..."
SEARCHLOC=$(echo $LOCATION | sed 's/[.]/_/g')
FOUND=$(find $WWWROOT/ -name $SEARCHLOC)
echo "- Verzeichniss gefunden unter $FOUND"
echo "- Erzeuge Konfiguration für $NAME..."
CUT=$(echo $FOUND | awk -F'[/]' '{ print $3 }')
echo "sed 's|$DIRPATTERN|$CUT|g;s/$LOGPATTERN/$NAME/g' $CONFTEMPLATE >> /$TMPDIR/$NAME.$PID" | sh
cp -f /$TMPDIR/$NAME.$PID $ETCDIR/awstats.$NAME.conf
rm -f /$TMPDIR/$NAME.$PID
fi
Sven Reichelt