shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [shell-script] Script para automatizar atualização do AWStats


From: MrBiTs
Subject: RE: [shell-script] Script para automatizar atualização do AWStats
Date: Mon, 5 Sep 2005 14:14:21 -0300

Nem é tão grande... Podemos fazer por aqui.

A lógica da coisa é a seguinte:

O script awstats.sh copia os logs do servidor IIS, que gerencia alguns
sites. A partir de um arquivo sites.txt, o nome dos websites é lido e o
diretório de log de cada um deles é passado como parametro para uma conexão
FTP que copia os logs de ontem para uma estrutura abaixo do diretório de
logs do apache. Então, a ferramenta de processamento do awstats é chamada,
gerando um log para o processamento e enviando-o por e-mail.

1) Conteúdo do arquivo sites.txt
www.site1.com.br^W3SVC286543210
www.site2.com.br^W3SVC286543210
www.site3.com.br^W3SVC286543210


2) Script awstats.sh
#!/bin/bash

IP=192.168.0.10
USER=iislogs
PASS=senhadoiislogs
DATE=`date +%y%m%d -d yesterday` > /var/log/awstats.log
LOGFILE="ex$DATE.log"

while read LINHA ; do
        HOST=`echo $LINHA | cut -d "^" -f 1`
        DIR=`echo $LINHA | cut -d "^" -f 2`
        LOGDIR=$DIR
        LOCAL=/usr/apache/logs/$HOST
        echo "`date +%d/%m/%Y\ %H:%M:%S` - Iniciando Copia de Logs de $HOST"
>> /var/log/awstats.log
        cd $LOCAL || { 
                        mkdir $LOCAL 
                        cd $LOCAL 
                     }
        if [ $? -gt 0 ] ; then
                echo "`date +%d/%m/%Y\ %H:%M:%S` - Erro acessando diretorio
$LOCAL" >> /var/log/awstats.log
                exit
        fi

ftp -n $IP <<_EOT_
user $USER $PASS
cd $LOGDIR
get $LOGFILE
bye
_EOT_
done < /usr/local/bin/sites.txt

echo "`date +%d/%m/%Y\ %H:%M:%S` - Final de Copia de Logs" >> >
/var/log/awstats.log

/usr/local/awstats/tools/awstats_updateall.pl now >> /var/log/awstats.log
2>&1 ; 

/usr/local/bin/monitora.sh address@hidden /var/log/awstats.log





3) monitora.sh

#!/bin/bash

Usage () {
        echo "Uso: $(basename $0) email arquivo"
}

if [ $# -ne 2 ] ; then
        Usage
        exit
fi

MAILADM=$1
FILENAME=$2

metasend -e "7bit" -s "Monitoracao de Processos: $FILENAME" -t "$MAILADM" -F
address@hidden -b -m text/plain -f $FILENAME >/dev/null 2>&1



Acho que isso já te ajuda bastante.


------------------------------------------
http://www.mrbits.com.br/
 
"There is still more Unix-nature in one
line of shell script than there is in ten
billion lines of C" 
Master Foo - Sh-bng Province - 530 B.C.
 
"Programar em shell scritp é a coisa mais gostosa que você pode fazer
vestido"
Julio C. Neves - 10/08/2005



reply via email to

[Prev in Thread] Current Thread [Next in Thread]