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

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

Re: [shell-script] Re: Script para curso....


From: Bruno Gunter Fricke
Subject: Re: [shell-script] Re: Script para curso....
Date: Fri, 22 Jun 2007 15:06:53 -0300

Opa! meus logs são rotacionados a cada hora. Sim, este script funciona
em um centralizador de logs (uma vhost simples, enjaulada) afinal
executar o comando em quase 10 maquinas diferentes é dose.

Qualquer dúvida, mais específica, sinta-se a vontade de me enviar um
pvt.

[]'s
Bruno Gunter

Em Sex, 2007-06-22 às 17:07 +0000, amaurimarx escreveu:
> Olá Bruno,
> 
> Só pra mim entender e colocar o script funcionar aqui, você faz a
> separação dos logs do postfix por ano mês dia? 
> Aqui utilizo apenas o rotate para começar um novo arquivo a cada mês,
> ou seja, crio um novo arquivo /var/log/maillog a cada mês, permacendo
> os antigos como /var/log/maillog.{1,2,3...n}.
> Não entendi a função do for em quantidade de servidores. Você está
> usando um servidor de logs centralizado?? É isso? Syslog-ng?
> Fico no aguardo. Obrigado!
> Amauri
> 
> --- Em address@hidden, Bruno Gunter Fricke
> <gunter@...> escreveu
> >
> > Muito bom, mas dá para melhorar. Que tal algo como:
> > 
> > 
> > #!/bin/sh
> > 
> > DiaInicio=$1;
> > DiaFinal=$2;
> > Mes=$3;
> > SearchString=$4;
> > LogFileOut=$5;
> > 
> > while [ "$DiaInicio" -le "$DiaFinal" ];
> > do
> > if [ "$DiaInicio" -lt "10" ];
> > then
> > echo "0$DiaInicio" >> ListaDias.MX.temp;
> > else
> > echo "$DiaInicio" >> ListaDias.MX.temp;
> > fi;
> > DiaInicio=`expr "$DiaInicio" + 1`;
> > done;
> > if [ "$Mes" -lt "10" ];
> > then
> > Mes="0$Mes";
> > fi;
> > Counter=1;
> > clear;
> > printf "logMXr.sh: Searching LOGs...\n";
> > for Dia in `cat ListaDias.MX.temp`;
> > do
> > #quantidade de servidores a serem pesquisados
> > for MX in 1 2 3 4 5 6 7 8;
> > do
> > for Ticket in `zegrep -i "$SearchString" ~/2007$Mes
> > $Dia/mx$MX/*.maillog.* | grep 'postfix' | grep -v NOQUEUE | awk
> '{print
> > $6}';
> > do
> > echo "---= $Counter =---";
> > Counter=`expr "$Counter" + 1`;
> > zgrep -h $Ticket ~/2007$Mes$Dia/mx
> > $MX/*.maillog.* | egrep '(from=<|to=<)' | sed -e 's/ mx.*]://g' -e
> 's/
> > (queue.*)//g' -e 's/, status=\w*//g';
> > done;
> > done;
> > done | tee $LogFileOut;
> > rm ListaDias.MX.temp;
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > Em Sex, 2007-06-22 às 14:07 +0000, amaurimarx escreveu:
> > > Fala galera...
> > > 
> > > Bruno, seguindo seu exemplo, fiz umas alterações aqui para
> conseguir
> > > saber em determinado mês e determinado usuário todos os emails
> > > enviados ou recebidos pelo mesmo. Como não sou um exímio
> programador
> > > em bash, gostaria da ajuda de vocês para otimizar meu script ou
> ver o
> > > que posso alterar para torná-lo mais útil e eficiente.
> > > 
> > > O script está disponível em: http://www.pastebin.ca/583684
> > > 
> > > Só para conhecimento, como não sei se todos os logs de email
> seguem o
> > > mesmo padrão, eu estou utilizando postfix.
> > > 
> > > O resultado do script ficou assim, separado por dia do mês:
> > > 
> > > ----------------------------------------------------------
> > > Jun 1 16:44:34 host postfix/pickup[6793]: 82D9231748F: uid=1001
> > > from=<remetente@...>
> > > Jun 1 16:44:34 host postfix/cleanup[3240]: 82D9231748F:
> > > message-id=<001101c7a485$736fa250$4b01a8c0@CTIC05>
> > > Jun 1 16:44:34 host postfix/qmgr[19657]: 82D9231748F:
> > > from=<remetente@...>, size=121966, nrcpt=1 (queue active)
> > > Jun 1 16:44:34 host postfix/local[6363]: 82D9231748F:
> > > to=<dest@...>, relay=local, delay=0.07, delays=0.04/0/0/0.02,
> > > dsn=2.0.0, status=sent (delivered to mailbox)
> > > Jun 1 16:44:34 host postfix/qmgr[19657]: 82D9231748F: removed
> > > ----------------------------------------------------------
> > > Jun 3 22:41:17 host postfix/pickup[23079]: 27C52317495: uid=1001
> > > from=<remetente@...>
> > > Jun 3 22:41:17 host postfix/cleanup[24185]: 27C52317495:
> > > message-id=<000501c7a649$75df7270$6e00a8c0@TELNET>
> > > Jun 3 22:41:17 host postfix/qmgr[19657]: 27C52317495:
> > > from=<remetente@...>, size=1827, nrcpt=5 (queue active)
> > > Jun 3 22:41:17 host postfix/local[24710]: 27C52317495:
> > > to=<dest2@...>, relay=local, delay=0.09,
> > > delays=0.01/0.03/0/0.05, dsn=2.0.0, status=sent (delivered to
> mailbox)
> > > Jun 3 22:41:17 host postfix/local[24709]: 27C52317495:
> > > to=<dest3@...>, relay=local, delay=0.11,
> > > delays=0.01/0.02/0/0.08, dsn=2.0.0, status=sent (delivered to
> mailbox)
> > > Jun 3 22:41:17 host postfix/local[24711]: 27C52317495:
> > > to=<dest4@...>, relay=local, delay=0.12,
> > > delays=0.01/0.04/0/0.07, dsn=2.0.0, status=sent (delivered to
> mailbox)
> > > Jun 3 22:41:19 host postfix/qmgr[19657]: 27C52317495: removed
> > > ----------------------------------------------------------
> > > 
> > > Fico no aguardo de sugestões.
> > > Muito obrigado,
> > > Amauri
> > > 
> > > --- Em address@hidden, Bruno Gunter Fricke
> > > <gunter@> escreveu
> > > >
> > > > Com certeza ;-)
> > > > 
> > > > Assumindo que seja Postfix, os Emails podem começar com algo
> assim:
> > > > 
> > > > $ zgrep -h "@" /var/log/maillog | grep -v "DISCARD" | grep -v
> > > "NOQUEUE"
> > > > | grep -v "REJECT" | wc -l
> > > > ou
> > > > 
> > > > $ zgrep -i "status=sent" /var/log/maillog | wc -l
> > > > 
> > > > 
> > > > Agora, os IPs serão mais difíceis de achar, pois até no Log de
> > > emails
> > > > você verá IPs. O ideal é pegar o padrão dos programas usados e
> > > entender
> > > > a estrutura de logs, entendeu?
> > > > 
> > > > []'s
> > > > Bruno Gunter
> > > > 
> > > > 
> > > > 
> > > > Em Qui, 2007-06-21 às 23:26 -0300, Tiago Barcellos Peczenyj
> > > escreveu:
> > > > > Exatamente.
> > > > > 
> > > > > PARECE que o problema consiste em fazer uma busca recursiva em
> > > algum
> > > > > tipo de
> > > > > padrao ;-)
> > > > > 
> > > > > Sera que um `grep -R` resolve ?
> > > > > 
> > > > > []`s Tiago
> > > > > 
> > > > > On 6/21/07, Bruno Gunter Fricke <gunter@> wrote:
> > > > > >
> > > > > > Elias,
> > > > > >
> > > > > > Não recomendo pedir alguém para fazer seu script, afinal o
> que
> > > você
> > > > > vai
> > > > > > aprender com isso? Dar copy/paste? ;-)
> > > > > >
> > > > > > Dicas de comandos para você pesquisar:
> > > > > > grep, egrep, zgrep, sed, tee e wc.
> > > > > >
> > > > > > Quando você tiver um esboço, terei o maior prazer em te
> ajudar.
> > > > > >
> > > > > > []'s
> > > > > > Bruno Gunter
> > > > > >
> > > > > > ----- Original Message -----
> > > > > > From: Elias P. Oliveira
> > > > > > To: address@hidden <shell-script%
> > > > > 40yahoogrupos.com.br>
> > > > > > Sent: Thursday, June 21, 2007 10:13 PM
> > > > > > Subject: [shell-script] Script para curso....
> > > > > >
> > > > > > Galera preciso entregar um script até segunda na faculdade.
> > > Alguém
> > > > > ajuda?
> > > > > >
> > > > > > Ele precisa:
> > > > > >
> > > > > > monitorar e mostrar todos os IPs e e-mails do diretório /var
> > > > > >
> > > > > > deve retornar algo mais ou menos assim:
> > > > > >
> > > > > > /var... IP = 2
> > > > > > /var/log emails = 3
> > > > > >
> > > > > > Se alguém ajudar ficarei muito grato. Ja o professor...
> > > > > >
> > > > > > :)
> > > > > >
> > > > > > []s
> > > > > >
> > > > > > Elias.
> > > > > >
> > > > > > [As partes desta mensagem que não continham texto foram
> > > removidas]
> > > > > >
> > > > > > 
> > > > > >
> > > > > 
> > > > > -- 
> > > > > Tiago B Peczenyj
> > > > > Linux User #405772
> > > > > 
> > > > > http://peczenyj.blogspot.com/
> > > > > 
> > > > > [As partes desta mensagem que não continham texto foram
> removidas]
> > > > > 
> > > > > 
> > > > > 
> > > > > 
> > > > > 
> > > > > 
> > > > 
> > > > 
> > > > [As partes desta mensagem que não continham texto foram
> removidas]
> > > >
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> 
> 
> 
> 
> 
>  


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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