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 <hligu...@gmail.com> | To: "P. J." <pjotam...@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="har...@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 | <hligu...@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. <pjotam...@gmail.com> | | Em 5 de outubro de 2011 00:17, Harlei Liguori Marcelino | <hligu...@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-requ...@lists.debian.org | with a subject of "unsubscribe". Trouble? Contact | listmas...@lists.debian.org | Archive: | http://lists.debian.org/cacnf0piled_6lzx16be+o4fk1uzikgexol_1svqxdr9exdw...@mail.gmail.com >) :-- final da mensagem [Poss?vel Spam] Re: [OT] Shell Script Apache Log de >Harlei Liguori Marcelino <hligu...@gmail.com> --: -- Leslie H. Watter Gerência de Inovação Corporativa / CELEPAR Fone: +55 41 3200-6534 Curitiba - Paraná - Brasil -- To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20111020124308.GJ9572@eseae11920.celepar.parana