[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] analisando logs
From: |
Diego Luis Kreutz |
Subject: |
Re: [shell-script] analisando logs |
Date: |
Thu, 24 Apr 2003 17:39:37 -0300 (BRT) |
acho que isso qui tb funga... mas usa soh um pouquinho de sed... :)
# pega o nome do usuario remoto e o tamanha da msg
grep 'to remote' maillog.1 | sed \
's/^.* msg \(.*\) to remote \(.*$\)/\2:\1/g' | sort > xx
# pega cada usuario remoto e os tamanhos das msgs enviadas para o mesmo
# e soma todos os tamanhos
for i in `cat xx | cut -d":" -f1 | uniq`
do
SOMA=`grep ^$i xx | cut -d":" -f2 | sed 's/$/+/'`
SOMA=`echo $SOMA | sed -e 's/ //g;s/+$//' | bc`
echo USUARIO REMOTE: $i BYTES: $SOMA
done
isso para um arquivo de log de mail jah "rotado"...
ai fica facil fazer um scriptzinho que roda todo o dia (crontab), apos o
logrotate, e vai juntando as informacoes diarias num "arquivinho" geral...
Listas XTMS wrote:
> Olá, lista.
>
> Estou fazendo um script para analisar o log do qmail (aquela coisa chata).
>
> Para quem não sabe, ele é +/- assim:
>
>
> Apr 16 07:10:39 linux qmail: 1050487839.319877 new msg 9483
> Apr 16 07:10:39 linux qmail: 1050487839.320033 info msg 9483: bytes 10869
> from <> qp 17536 uid 64014
> Apr 16 07:10:39 linux qmail: 1050487839.399435 starting delivery 454: msg
> 9483 to remote address@hidden
> Apr 16 07:10:39 linux qmail: 1050487839.525411 end msg 9483
>
> Notem que a mensagem tem um ID (9483, nesse caso) e que a mensagem começa e
> acaba (new msg e end msg)
> O que eu estou tentando fazer é um script que leia todo o log do qmail e me
> diga ao final:
>
> USUARIO REMOTO: address@hidden BYTES: 9999 bytes
>
> sendo que:
> 1- Existem centenas de usuários remotos. E usuários remotos são adicionados e
> removidos sem prévio aviso
> 2- o relatório final tem o TOTAL de bytes de todo o parse do log para aquele
> usuário
>
> O que eu já fiz até agora:
>
> #!/bin/bash
> cat mail.log.0|while read mail log
> do
> ID=" "
> ID=`echo "$log"|grep "new msg"|cut -d " " -f8`
> if [ ! -z $ID ]
> then
> echo ID: $ID
> fi
> TO=`echo "$log"|grep "$ID"|grep "to remote"|cut -d " " -f13`
> if [ ! -z $TO ]
> then
> echo TO: $TO
> fi
> BYTES=`echo "$log"|grep "$ID"|grep bytes|grep -v spamd|cut -d " "
> -f10`
> if [ ! -z $BYTES ]
> then
> echo Tamanho: $BYTES
> fi
> done
>
> Mas por enquanto só consigo ver o tamanho da mensagem atual e a forma como
> ela é apresentada não ajuda.
>
> Complicador:
> Pode acontecer uma situação assim:
>
> Apr 16 07:10:39 linux qmail: 1050487839.319877 new msg 9483
> Apr 16 07:10:39 linux qmail: 1050487839.319877 new msg 9768
> Apr 16 07:10:39 linux qmail: 1050487839.320033 info msg 9483: bytes 10869
> from <> qp 17536 uid 2014
> Apr 16 07:10:39 linux qmail: 1050487839.319877 new msg 1928
> Apr 16 07:10:39 linux qmail: 1050487839.399435 starting delivery 454: msg
> 9483 to remote address@hidden
> Apr 16 07:10:39 linux qmail: 1050487839.320033 info msg 9768: bytes 136 from
> <> qp 17540 uid 2014
> Apr 16 07:10:39 linux qmail: 1050487839.525411 end msg 9483
> Apr 16 07:10:39 linux qmail: 1050487839.399435 starting delivery 455: msg
> 9768 to remote address@hidden
>
> Onde diversos e-mails entram ao mesmo tempo e não é possível trabalhar de
> forma linear.
>
> UFA! Espero ter sido bem claro. :)
>
>
> []'s
> Eri Ramos Bastos
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listasdiscussao.cjb.net
> ---------------------------------------------------------------------
>
>
> Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
> http://br.yahoo.com/info/utos.html
>
>
>