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

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

Separacao de Logs


From: Marcus Vinicius
Subject: Separacao de Logs
Date: Sat, 9 Jul 2005 20:24:21 -0300 (ART)

Boa Noite pessoal,

Eu tenho o seguinte arquivo de log de e-mail (e mais
facil colar ele num txt para visualizacao mais limpa)
: 


cat log.txt


@4000000042d049122b346acc status: local 1/50 remote
0/100
@4000000042d049122cc109f4 delivery 272678: success:
did_0+0+1/
@4000000042d049122cc39e1c status: local 0/50 remote
0/100
@4000000042d049122cc55b6c end msg 287239
@4000000042d0491315a413c4 new msg 287126
@4000000042d0491315a43304 info msg 287126: bytes 966
from <address@hidden> qp 31504 uid 89
@4000000042d0491315df3094 starting delivery 272679:
msg 287126 to local address@hidden
@4000000042d0491315e389dc status: local 1/50 remote
0/100
@4000000042d049131831e6ac delivery 272679: success:
did_0+0+1/
@4000000042d049131834403c status: local 0/50 remote
0/100
@4000000042d04913183643dc end msg 287126
@4000000042d049172f67b43c new msg 287126
@4000000042d049172f67cbac info msg 287126: bytes 44605
from <address@hidden> qp 31722 uid 89
@4000000042d049172fa8283c starting delivery 272680:
msg 287126 to local
address@hidden
@4000000042d049172fa8765c status: local 1/50 remote
0/100
@4000000042d049172fa97444 starting delivery 272681:
msg 287126 to local
address@hidden
@4000000042d049172fa983e4 status: local 2/50 remote
0/100
@4000000042d049173140ecc4 delivery 272681: failure:
user_is_over_quota/
@4000000042d0491731454ddc status: local 1/50 remote
0/100
@4000000042d049173146ff74 delivery 272680: failure:
user_is_over_quota/
@4000000042d049173148822c status: local 0/50 remote
0/100
@4000000042d04917328a8b94 bounce msg 287126 qp 31733
@4000000042d04917328b9d04 end msg 287126
@4000000042d0491732b554b4 new msg 287256
@4000000042d0491732b5606c info msg 287256: bytes 45202
from <> qp 31733 uid 1009
@4000000042d0491732fef844 starting delivery 272682:
msg 287256 to local
address@hidden
@4000000042d0491732ff1b6c status: local 1/50 remote
0/100

POis bem, percebam a linha que tem o e-mail
address@hidden, Este e-mail é o que eu tenho
como parâmetro. Eu preciso separar os logs referente a
este e-mail. Mas vcs podem verificar que o servidor
não separa os logs certinho por envio, e sim deixa
tudo bagunçado .


Abaixo eu separei manualmente o log completo refente a
este envio ficou assim:



@4000000042d0491315a413c4 new msg 287126
@4000000042d0491315a43304 info msg 287126: bytes 966
from <address@hidden> qp 31504 uid 89
@4000000042d0491315df3094 starting delivery 272679:
msg 287126 to local address@hidden
@4000000042d049131831e6ac delivery 272679: success:
did_0+0+1/
@4000000042d04913183643dc end msg 287126


Isso que eu desejo.

Vejam que o significado do log para facilitar o
entendimento:

logo na primeira linha ele apresenta um id do envio
new msg 287126
depois ele relaciona o id com o endereço que eu tenho
a 3 linha é importante pois ele relaciona o id 287126
com um outro id delivery 272679: msg 287126
e na 5 linha ele através deste segundo id me informa
se a mensagem foi corretamnete enviada: delivery
272679: success

Então utilizo o seguinte script ( que um amigo da
lista contribui comigo um tempo atras):
<<<<<# ./script.sh log.txt address@hidden  >>>>>

cat script.sh

#!/bin/bash

FILE=$1
EMAIL=$2

# busca todas as mensagens com o email especificado
MSGS=`fgrep "from <$EMAIL>" $FILE`

# define IFS para \n
IFS=\

for LINE in $MSGS
do
  MSG_ID=`echo "$LINE" | sed -r 's/.*msg
([0-9]+).*/\1/'`
  DEL_ID=`sed -rn "s/.*delivery ([0-9]+): msg
$MSG_ID.*/\1/p" "$FILE"`

  #echo "MSG ID: $MSG_ID"
  #echo "DEL ID: $DEL_ID"

  egrep -e "(info msg $MSG_ID: bytes)|(starting
delivery $DEL_ID: msg
$MSG_ID)|(delivery $DEL_ID:)" "$FILE"
done


Ele funciona quase bem, pois ele só me tras o
resultado que indiquei acima se o ID 287126 ( que eu
recebo na variavel "$MSG_ID" ) só existir uma vez no
arquivo o que não é o caso. 
Ou seja a variavel $MSG_ID se repete varias vezes e
ele pega varios logs que eu nao quero, como poderia
fazer para ele pegar apenas os logs que se referem ao
e-mail address@hidden ?
Obs: o ID delivery é unico , não se repete no arquivo,
porem o Id mensage repete varias vezes.

O e-mail é grande mas Se alguem puder me ajudar
ficaria muito grato.

Abraços!



        
        
                
_______________________________________________________ 
Yahoo! Acesso Grátis - Internet rápida e grátis. 
Instale o discador agora! http://br.acesso.yahoo.com/


reply via email to

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