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

Re: [Poss?vel Spam] Re: [OT] Shell Script Apache Log



Oi Harley,

porque vc não usa o comm para comparar 2 arquivos ?


Veja um exemplo do que eu te digo:


------------
$ comm -3 <(tail -n 5 /var/log/auth.log | sort ) <(tail -n 5 /var/log/auth.log.1 | sort)
        Oct 17 10:39:04 xxxxxxxxxxxxx CRON[12130]: pam_unix(cron:session): session closed for user root
        Oct 17 10:45:02 xxxxxxxxxxxxx CRON[12171]: pam_limits(cron:session): Unknown kernel rlimit 'Max realtime timeout' ignored
        Oct 17 10:45:02 xxxxxxxxxxxxx CRON[12171]: pam_unix(cron:session): session closed for user root
        Oct 17 10:45:02 xxxxxxxxxxxxx CRON[12171]: pam_unix(cron:session): session opened for user root by (uid=0)
        Oct 17 10:46:30 xxxxxxxxxxxxx su[11744]: pam_unix(su:session): session closed for user nobody
Oct 20 10:33:01 xxxxxxxxxxxxx CRON[27030]: pam_limits(cron:session): Unknown kernel rlimit 'Max realtime timeout' ignored
Oct 20 10:33:02 xxxxxxxxxxxxx CRON[27030]: pam_unix(cron:session): session closed for user root
Oct 20 10:35:01 xxxxxxxxxxxxx CRON[27179]: pam_limits(cron:session): Unknown kernel rlimit 'Max realtime timeout' ignored
Oct 20 10:35:01 xxxxxxxxxxxxx CRON[27179]: pam_unix(cron:session): session closed for user root
Oct 20 10:35:01 xxxxxxxxxxxxx CRON[27179]: pam_unix(cron:session): session opened for user root by (uid=0)
$
------------


agora com o wc -l 

------------
$ wc -l <(comm -3 <(tail -n 5 /var/log/auth.log | sort ) <(tail -n 5 /var/log/auth.log.1 | sort))
10 /dev/fd/63
------------


recebendo direto o número de linhas diferentes

------------
$ wc -l <(comm -3 <(tail -n 5 /var/log/auth.log | sort ) <(tail -n 5 /var/log/auth.log.1 | sort)) | cut -f 1 -d ' '
10
------------



agora mudando para o mesmo arquivo .... 

------------
$ wc -l <(comm -3 <(tail -n 5 /var/log/auth.log | sort ) <(tail -n 5 /var/log/auth.log | sort)) | cut -f 1 -d ' '
0
------------

Dessa maneira vc consegue comparar arquivos e linhas, basta ajeitar a saida do tail -f para algum lugar temporário conforme tua necessidade. 

[]s

LEslie



Em Wed, Oct 05, 2011 at 11:44:49AM -0300, Harlei Liguori Marcelino escreveu:
| Date: Wed, 5 Oct 2011 11:44:49 -0300
| Subject: [Poss?vel Spam]  Re: [OT] Shell Script Apache Log
| From: Harlei Liguori Marcelino <hliguori@gmail.com>
| To: "P. J." <pjotamail@gmail.com>
| Cc: Debian-User <debian-user-portuguese@lists.debian.org>
| 
|    Amigos, ta dificil aqui uahauhauha sera que podem me ajudar?
|    Por algum motivo o script abaixo le todas as linhas mas nao refaz as
|    checagens, vejam:
| 
|    #!/bin/bash
| 
|    # Set some variables here
| 
|    logfile="/var/log/httpd/server_error_log"
| 
|    pattern="[error]"
| 
|    email="harlei@server.com"
| 
|    erros_notificados="/root/script/erros_notificados.log"
| 
|    # read each new line as it gets written to the log file
| 
|    tail -fn0 $logfile | while read line ; do
| 
|      # check each line against our pattern
| 
|      echo "$line" | grep -i "$pattern"
| 
|      # if a line matches...
| 
|      if [ $? = 0 ]; then
| 
|        linha_tratada=`echo "$line" | awk '{print $9, $10, $11, $12, $13, $14,
|    $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29,
|    $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40}'`
| 
|        # procura linha_tratada no arquivo de erros existente
| 
|        # se nao existir, cadastra no arquivo e envia um email com conteudo de
|    line
| 
|        if [ $(grep -c "$linha_tratada" $erros_notificados) -eq 0 ]; then
| 
|           echo $linha_tratada >> $erros_notificados
| 
|           # send an email!
| 
|           echo "Found an error: $line" | mail $email -s ERROR
| 
|        fi
| 
|      fi
| 
|    done
| 
|    O problema e:
| 
|        if [ $(grep -c "$linha_tratada" $erros_notificados) -eq 0 ]; then
| 
|    A primeira linha ele pega e checa, se e zero, ele cadastra a linha no
|    arquivo certinho, so que quando chega a segunda, terceira, etc* ele nao
|    checa mais e da sempre o valor como 0 e ai cadastra linhas iguais no
|    arquivo, mesmo ja tendo cadastrado anteriormente, ai envia emails sobre
|    problemas que ja foram notificados toda hora.
| 
|    Alguem sabe me ajudar a descobrir o pq q ele nao checa todas as vezes?
| 
|    agradec,o desde ja
| 
|    att
| 
|    Harlei
| 
|    Em 5 de outubro de 2011 01:16, Harlei Liguori Marcelino
|    <hliguori@gmail.com> escreveu:
| 
|      Obrigado pela resposta meu amigo ;) vou verificar esses softwares...
|       
|      mas comecei a desenvolver um shell pra isso tb. Estou agarrado tentando
|      tirar as primeiras colunas do arquivo de log do apache onde tem IP de
|      origel e tal, pq essa parte geralmente sera diferente mesmo. Alguem sabe
|      como reverter o resultado do print do awk por exemplo para mostrar todas
|      as colunas exceto as primeiras ou algo q fac,a isso em shell?
|       
|      att
|       
|      Harlei
| 
|       
|      2011/10/5 P. J. <pjotamail@gmail.com>
| 
|        Em 5 de outubro de 2011 00:17, Harlei Liguori Marcelino
|        <hliguori@gmail.com> escreveu:
|        > Amigos,
|        >
| 
|        > ou Software que fac,a a varredura do arquivo de erros do apache de X
|        em X
|        > minutos, verifique os erros existentes e os envie por e-mail.
| 
|        http://www.icinga.org/
| 
|        http://www.zabbix.com/
| 
|        --
|        |  .''`.   A fe nao da respostas. So impede perguntas.
|        | : :'  :
|        | `. `'`
|        |   `-   P.J. - http://wiki.dcc.ufba.br/~PeeJay
| 
|        --
|        To UNSUBSCRIBE, email to
|        debian-user-portuguese-REQUEST@lists.debian.org
|        with a subject of "unsubscribe". Trouble? Contact
|        listmaster@lists.debian.org
|        Archive:
|        [🔎] CACnf0piLED_6Lzx16bE+o4Fk1UziKgExoL_1sVQxdR9eXDW8Xw@mail.gmail.com">http://lists.debian.org/[🔎] CACnf0piLED_6Lzx16bE+o4Fk1UziKgExoL_1sVQxdR9eXDW8Xw@mail.gmail.com
>) :-- final da mensagem [Poss?vel Spam]  Re: [OT] Shell Script Apache Log de Harlei Liguori Marcelino <hliguori@gmail.com> --:

-- 
Leslie H. Watter
Gerência de Inovação Corporativa / CELEPAR
Fone: +55 41 3200-6534
Curitiba - Paraná - Brasil


Reply to: