#!/usr/bin/sh # Das Script wurde ausgeheckt von: Jens Elkner (elkner@irb.cs.uni-magdeburg.de) # und ist als einfaches FrontEnd zu gwfstats gedacht. # Beim Aufruf braucht nur noch der JahrMonat (z.B. 9701) bzw. # x und das Jahr (z.B. x 96) angegeben werden. # Alle anderen Paramter kommen von diesem Script bzw. werden durch dieses # Script generiert. # Der 1. Parameter muß www, ftp, referer, agent oder all lauten und erstellt # die entsprechenden Statistiken. # # Falls Jahresstatistik erstellt werden soll, spielt es keine Rolle, welcher # Monat als 2. Parameter angegeben wird, hauptsache es steht irgendwas da # # Falls Monatliche Statistik erstellt werden soll, kann der 3. Parameter (Jahr) # wegfallen. WHAT=$1 YEARMONTH=$2 YEAR=$3 LOGBASE=/local/logs SCRIPTDIR=/local/www/etc HTMLBASE=/local/www/htdocs/stats FULL=c.html LITE=l.html GRAF=g.html REF=r.html AGENT=a.html PROXY=p.html HTTPDSERVER="IRB.CS.Uni-Magdeburg.De" ALLMONTH="01 02 03 04 05 06 07 08 09 10 11 12" FULLSTDPARAMS="-a 40 -c 40 -d 40 -f 40 -L" LITESTDPARAMS="-a 10 -c 10 -d 10 -f 10 -A -C -D -F -L" # ============================================================================== SetLogFiles() { # $1 Name des Logfiles (z.B. access_log, referrer_log, xferlog, ...) # $2 BasisDirectory für die Statistik-Dateien # $3 wo Log Dateien liegen # $4 falls vorherige Statisktik-Dateien einbezogen werden sollen, dann gwfstats NAME=$1 STATDIR=$2 LOGDIR=$3 if [ -z "$NAME" ]; then echo "Sorry, don't know, which files!" exit fi if [ "$4" = "use_old" ]; then USE_STATS="y" else USE_STATS="" fi if [ ! -d $STATDIR ]; then mkdir $STATDIR fi LOGFILES="" OLDSTATFILES="" if [ -z "$YEARMONTH" ]; then echo "Sorry, don't know, which month!" echo "Usage: $0 YearMonth (e.g. $0 9701) or" echo " $0 current or" echo " $0 x Year" exit fi if [ "$YEARMONTH" = "current" ]; then LOGFILES=${LOGDIR}/$NAME if [ ! -f "$LOGFILES" ]; then echo $LOGFILES does not exist. exit fi TMP=`/usr/bin/date "+%y%m"` STATDIR=${STATDIR}/$TMP return fi if [ -z "$YEAR" ]; then LOGFILES=${LOGDIR}/SAVE/${NAME}.${YEARMONTH}.gz if [ ! -f "$LOGFILES" ]; then echo $LOGFILES does not exist. exit fi STATDIR=${STATDIR}/${YEARMONTH} else if [ "$NAME" = "agent_log" ]; then FILE=$AGENT elif [ "$NAME" = "proxy_log" ]; then FILE=$PROXY elif [ "$NAME" = "access_log" -o "$NAME" = "xferlog" ]; then FILE=$FULL elif [ "$NAME" = "referer_log" ]; then FILE=$REF fi for MM in $ALLMONTH do if [ -n "$USE_STATS" -a -r ${STATDIR}/${YEAR}${MM}/$FILE ]; then if [ -z "$OLDSTATFILES" ]; then OLDSTATFILES="-i ${STATDIR}/${YEAR}${MM}/$FILE" else OLDSTATFILES="$OLDSTATFILES,${STATDIR}/${YEAR}${MM}/$FILE" fi elif [ -r ${LOGDIR}/SAVE/${NAME}.${YEAR}${MM}.gz ]; then LOGFILES="$LOGFILES ${LOGDIR}/SAVE/${NAME}.${YEAR}${MM}.gz" fi done STATDIR=${STATDIR}/total${YEAR} fi } TimeStamp() { /usr/ucb/echo -n "$1" date -u } # ============================================================================= # WWW Statistiken von access_log mit gwfstats if [ "$WHAT" = "www" -o "$WHAT" = "all" ]; then PATTERN='-u #^/((Excite)|(hypermail)|(icons)|(proxy)|(rn)|(se)|(sw-eng)|(stats)|(theo)|(linux))$#/$1/# -O u' SetLogFiles access_log ${HTMLBASE}/WWW ${LOGBASE}/WWW use_old TimeStamp "Generating Full WWW stats (${HTMLBASE}/WWW) : " ${SCRIPTDIR}/gwfstats.pl $FULLSTDPARAMS \ -N "Web Log Report for $HTTPDSERVER" -t common \ -I '(index.html|index.shtml|index.cgi|INDEX.html)' \ $OLDSTATFILES -g $GRAF -p $STATDIR -o $FULL \ $PATTERN \ $LOGFILES TimeStamp "Generating Lite WWW stats (${HTMLBASE}/WWW) : " ${SCRIPTDIR}/gwfstats.pl $LITESTDPARAMS \ -N "Lite Web Log Report for $HTTPDSERVER" -t common \ -I '([Ii]ndex.s*html|[Ww]elcome.html)' \ -i ${STATDIR}/$FULL -p $STATDIR -o $LITE \ $PATTERN PATTERN='-r ^/~elkner -u #^/~elkner$#/#@@#^/~elkner/(.*)#/$1#@@#^/(TOOLS)|(JDK)|(Mbone)|(audio)|(cgi)|(images)|(nasa)|(private)|(proxy)|(save)|(stats)|(tiff)|(webtools))$#/$1/# -O ru' SetLogFiles access_log ${HTMLBASE}/elkner ${LOGBASE}/WWW use_old TimeStamp "Generating Full WWW stats (${HTMLBASE}/elkner) : " ${SCRIPTDIR}/gwfstats.pl $FULLSTDPARAMS \ -N "Web Log Report for ~elkner at $HTTPDSERVER" -t common \ -I '(index.html|index.shtml|index.cgi|INDEX.html)' \ $OLDSTATFILES -g $GRAF -p $STATDIR -o $FULL \ $PATTERN \ $LOGFILES TimeStamp "Generating Lite WWW stats (${HTMLBASE}/elkner) : " ${SCRIPTDIR}/gwfstats.pl $LITESTDPARAMS \ -N "Lite Web Log Report for ~elkner at $HTTPDSERVER" -t common \ -I '([Ii]ndex.html|[Ww]elcome.html)' \ -i ${STATDIR}/$FULL -p $STATDIR -o $LITE fi # Statistiken von referer_log mit refstats if [ "$WHAT" = "referer" -o "$WHAT" = "all" ]; then PATTERN='-U #^http://(.*)\.tu-magdeburg.de/#http://$1\.uni-magdeburg.de/#i@@#^http://wotan.cs.uni-magdeburg.de/#http://irb.cs.uni-magdeburg.de/#i@@#^http://(petrus|news|olsn)\.cs\.#http://java.cs.#@@#^http://(eva|sunpool)\.cs\.#http://www.cs.# -x ^[Ff][Ii][Ll][Ee]:' SetLogFiles referer_log ${HTMLBASE}/WWW ${LOGBASE}/WWW TimeStamp "Generating Refstats (${HTMLBASE}/WWW) : " ${SCRIPTDIR}/refstats.pl -N $HTTPDSERVER \ -o ${STATDIR}/$REF -m 5\ -X '(.*.gif)|(.*.jpg)|(.*.xbm)|(.*.pl)' \ $PATTERN \ $LOGFILES SetLogFiles referer_log ${HTMLBASE}/elkner ${LOGBASE}/WWW TimeStamp "Generating Refstats (${HTMLBASE}/elkner) : " ${SCRIPTDIR}/refstats.pl -N "~elkner on $HTTPDSERVER" \ -o ${STATDIR}/$REF -m 5 \ -X '(.*.gif)|(.*.jpg)|(.*.xbm)|(.*.pl)' \ $PATTERN \ -r '^/~elkner' \ $LOGFILES fi # Statistiken von agent_log mit browsercounter if [ "$WHAT" = "agent" -o "$WHAT" = "all" ]; then SetLogFiles agent_log ${HTMLBASE}/WWW ${LOGBASE}/WWW use_old TimeStamp "Generating Agent Stats (${HTMLBASE}/WWW) : " ${SCRIPTDIR}/browsercounter.pl \ -N $HTTPDSERVER \ $OLDSTATFILES -p $STATDIR -o $AGENT $LOGFILES fi # Statistiken von agent_log und proxy_log mit proxycounter if [ "$WHAT" = "proxy" -o "$WHAT" = "all" ]; then SetLogFiles agent_log ${HTMLBASE}/WWW ${LOGBASE}/WWW if [ -z "$YEAR" ]; then AGENTLOGFILES=`echo $LOGFILES | sed -e 's/\ /,/g'` if [ -n "AGENTLOGFILES" ]; then AGENTLOGFILES="-a $AGENTLOGFILES" fi fi SetLogFiles proxy_log ${HTMLBASE}/WWW ${LOGBASE}/WWW use_old TimeStamp "Generating Agent Stats (${HTMLBASE}/WWW) : " ${SCRIPTDIR}/proxycounter.pl \ -N $HTTPDSERVER \ $OLDSTATFILES $AGENTLOGFILES -p $STATDIR -o $PROXY $LOGFILES fi # FTP Statistiken von xferlog mit gwfstats if [ "$WHAT" = "ftp" -o "$WHAT" = "all" ]; then # complete if [ -z "$YEAR" ]; then PATTERN='-r ^/((d.01)|(d.02)|(pub))/ -u #^/((d.01)|(d.02)|(pub))/#/# -O ru' else PATTERN="" fi SetLogFiles xferlog ${HTMLBASE}/FTP ${LOGBASE}/FTP use_old TimeStamp "Generating Full FTP Stats (${HTMLBASE}/FTP) : " ${SCRIPTDIR}/gwfstats.pl $FULLSTDPARAMS \ -N "FTP Log Report for $HTTPDSERVER" -t ftp \ $OLDSTATFILES -g $GRAF -p $STATDIR -o $FULL \ $PATTERN \ $LOGFILES TimeStamp "Generating Lite FTP Stats (${HTMLBASE}/FTP) : " ${SCRIPTDIR}/gwfstats.pl $LITESTDPARAMS \ -N "Lite FTP Log Report for $HTTPDSERVER" -t ftp \ -i ${STATDIR}/$FULL -p $STATDIR -o $LITE # Gnu mirror if [ -z "$YEAR" ]; then PATTERN='-r ^/((d.01)|(d.02)|(pub))/gnu/ -u #^/((d.01)|(d.02)|(pub))/gnu/#/# -O ru' else PATTERN="" fi SetLogFiles xferlog ${HTMLBASE}/FTP/gnu ${LOGBASE}/FTP use_old TimeStamp "Generating Full FTP Stats (${HTMLBASE}/FTP/gnu) : " ${SCRIPTDIR}/gwfstats.pl $FULLSTDPARAMS \ -N "FTP Log Report for $HTTPDSERVER" -t ftp \ $OLDSTATFILES -g $GRAF -p $STATDIR -o $FULL \ $PATTERN \ $LOGFILES TimeStamp "Generating Lite FTP Stats (${HTMLBASE}/FTP/gnu) : " ${SCRIPTDIR}/gwfstats.pl $LITESTDPARAMS \ -N "Lite FTP Log Report for $HTTPDSERVER" -t ftp \ -i ${STATDIR}/$FULL -p $STATDIR -o $LITE # Java mirror if [ -z "$YEAR" ]; then PATTERN='-r ^/((d.01)|(d.02)|(pub))/Java/ -u #^/((d.01)|(d.02)|(pub))/Java/#/# -O ru' else PATTERN="" fi SetLogFiles xferlog ${HTMLBASE}/FTP/Java ${LOGBASE}/FTP use_old TimeStamp "Generating Full FTP Stats (${HTMLBASE}/FTP/Java) : " ${SCRIPTDIR}/gwfstats.pl $FULLSTDPARAMS \ -N "FTP Log Report for $HTTPDSERVER" -t ftp \ $OLDSTATFILES -g $GRAF -p $STATDIR -o $FULL \ $PATTERN \ $LOGFILES TimeStamp "Generating Lite FTP Stats (${HTMLBASE}/FTP/Java) : " ${SCRIPTDIR}/gwfstats.pl $LITESTDPARAMS \ -N "Lite FTP Log Report for $HTTPDSERVER" -t ftp \ -i ${STATDIR}/$FULL -p $STATDIR -o $LITE # Linux mirror if [ -z "$YEAR" ]; then PATTERN='-r ^/((d.01)|(d.02)|(pub))/linux/ -u #^/((d.01)|(d.02)|(pub))/linux/#/# -O ru' else PATTERN="" fi SetLogFiles xferlog ${HTMLBASE}/FTP/linux ${LOGBASE}/FTP use_old TimeStamp "Generating Full FTP Stats (${HTMLBASE}/FTP/linux) : " ${SCRIPTDIR}/gwfstats.pl $FULLSTDPARAMS \ -N "FTP Log Report for $HTTPDSERVER" -t ftp \ $OLDSTATFILES -g $GRAF -p $STATDIR -o $FULL \ $PATTERN \ $LOGFILES TimeStamp "Generating Lite FTP Stats (${HTMLBASE}/FTP/linux) : " ${SCRIPTDIR}/gwfstats.pl $LITESTDPARAMS \ -N "Lite FTP Log Report for $HTTPDSERVER" -t ftp \ -i ${STATDIR}/$FULL -p $STATDIR -o $LITE fi TimeStamp "$0 done at: "