AwStats - Script zur Erstellung der Konfigurationsdateien

Bash, Shell, PHP, Python, Perl, CGI
sven-reichelt
Posts: 92
Joined: 2003-04-25 15:08

AwStats - Script zur Erstellung der Konfigurationsdateien

Post by sven-reichelt » 2005-03-05 16:29

Hallo!

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
done
Und zwar wenn das Domainverzeichniss nicht gefunden wird, wird danach gesucht.
Aber 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
Beste Grüße,
Sven Reichelt

bfal
Posts: 68
Joined: 2002-07-07 15:12
Location: Lüneburg

Re: AwStats - Script zur Erstellung der Konfigurationsdateien

Post by bfal » 2005-03-05 20:19

Hei,

na das Skript kommt mir doch sehr bekannt vor :wink:
Eigentlich war es dafür gedacht, Awstats unter VHCS einzurichten.
Wie willst du es denn einsetzen? Und wie sieht deine Verzeichnissstruktur aus?

Gruß
Björn

sven-reichelt
Posts: 92
Joined: 2003-04-25 15:08

Re: AwStats - Script zur Erstellung der Konfigurationsdateien

Post by sven-reichelt » 2005-03-05 22:01

Das ist das Script um AWStats unter VHCS einzusetzen.
Nur leider ist es für die Version 1.6 von VHCS, ich möchte es jetzt für 2.4 einsetzen.

Deswegen, schnell umgeschrieben.
Nur was mich noch stört, dass auch Konfigurationsdateien von nicht mehr vorhandenen Domains angelegt werden.
Evtl könnte man das ganze auch noch so erweitern, dass existierende Konfigurationsdateien von nicht mehr vorhanden Domains auch gelöscht werden. Nur fehlt mir dazu die eine kleine Sache (siehe oben)

bfal
Posts: 68
Joined: 2002-07-07 15:12
Location: Lüneburg

Re: AwStats - Script zur Erstellung der Konfigurationsdateien

Post by bfal » 2005-03-06 13:08

Eigentlich machte das Skript ursprünglich nichts weiter, als dein Webdir nach den Accesslogs von VHCS zu durchsuchen, um daraus den Domainnamen zu extrahieren. Warum du da eine Variable LOGROOT hast, weiss ich nicht, aber die muss eigentlich dem WWWROOT entprechen.
(Siehe Originalskript unter http://www.falkenhagen.net/vhcsstats.tar.gz).

Normalerweise lagen die Logfiles von VHCS doch im Webroot, im Verzeichniss Log.

Das ganze kannst du einfach testen indem du mal ein "find /var/log/apache2/users/ -name *-access.log" bei dir machst. Er sollte dann die ganzen access logs deiner Domains auflisten. Wenn da nichts kommt, hast du dein Problem gefunden.

Da die Verzeichnissstruktur bei VHCS recht Starr war hatte ich keine Sicherheit diesbezüglich eingebaut.

Björn