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 x CRON[12130]: pam_unix(cron:session): session closed for user root Oct 17 10:45:02 x CRON[12171]: pam_limits(cron:session): Unknown kernel rlimit 'Max realtime timeout' ignored Oct 17 10:45:02 x CRON[12171]: pam_unix(cron:session): session closed for user root Oct 17 10:45:02 x CRON[12171]: pam_unix(cron:session): session opened for user root by (uid=0) Oct 17 10:46:30 x su[11744]: pam_unix(su:session): session closed for user nobody Oct 20 10:33:01 x CRON[27030]: pam_limits(cron:session): Unknown kernel rlimit 'Max realtime timeout' ignored Oct 20 10:33:02 x CRON[27030]: pam_unix(cron:session): session closed for user root Oct 20 10:35:01 x CRON[27179]: pam_limits(cron:session): Unknown kernel rlimit 'Max realtime timeout' ignored Oct 20 10:35:01 x CRON[27179]: pam_unix(cron:session): session closed for user root Oct 20 10:35:01 x 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
Re: [OT] Shell Script Apache Log
-BEGIN PGP SIGNED MESSAGE- Hash: SHA512 On 05-10-2011 00:17, Harlei Liguori Marcelino wrote: Amigos, apesar de não ser o assunto da lista já tive problemas de Shell Script e recebi diversar ajudas importantes aqui na lista, fora que, talvez exista algum software já escrito que eu possa usar poupando o trabalho de escrever um Shell Script. Preciso urgentemente escrever um Shell Script ou encontrar um Shell Script ou Software que faça a varredura do arquivo de erros do apache de X em X minutos, verifique os erros existentes e os envie por e-mail. Isso teoricamente seria até simples de fazer, agora, o problema todo é como fazer isso e evitar que os mesmos erros sejam enviados 1.000 vezes por email? Por exemplo, se tenho um erro X acontecendo em uma tela muito usada, este erro será gerado milhares de vezes e este script simples não conseguiria checar se o erro já foi enviado por e-mail ou não. Alguém teria algum script q faça algo parecido ou me indicaria algum software? Ou se for o caso, me dê uma luz de como fazer este script? Pensei em algo como guardar em um arquivo texto as linhas que já enviei por e-mail e checar se a linha existe no arquivo, ou algo deste tipo. Será válido? Ou alguém tem alguma outra ideia? Qualquer ajuda é extremamente bem vinda. O nome da ferramenta que você procura é logcheck. Na mesma linha você pode configurar o swatch ou o syslog-ng. Talvez seja do seu interesse o logwatch. Finalmente, você pode construir algo a partir do princípios do fail2ban. Abraço, - -- Felipe Augusto van de Wiel (faw) f...@funlabs.org -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQIcBAEBCgAGBQJOoCgeAAoJEMa4WYSFUi4t2c4P/i50TRLXtkSyoCD0s68NyXYZ iyqALPFPoByputT/u6osjb0qT7WlVoEN46cz7iIjcW6LZvFfT+aIEp8qWPLjxHwT tYyKP1s7q692wjujVqxgjXzwFIonAxS404x97mkZF0fFqw3ZOzLLcCCtbIC3qxP/ zQJPM8V9Khs1klrryWz4FCpfbMxyEM/oQwZqg2XA9bDtER+GBAU2KDt7V40p9rYD Q6MJ8GEmyh3vuA5ozzGug3PnI6HujdHYd3YQ409ZcBEwqN/ZEaXCm387OXSUHhvW PXy55Kxbr0B2j1chSHyfrUVAwJfhUbAH4ZkbWs0GHADuGd7E1Zrj8kPIvRaJn0wA Y5TZGVODoskJsDlTOLjbzT/a/s2VajmyVfYk5H2gaGy9X3BwEBMnQ+mGr7WgD/CG 1OLJqhmFuTuIrNegcuKfTc4xx6rfS0vEl5DHmqgs1sRqIM9YrZUeav3OB12zSopo MQijmjZvFTl4fpYwAUah+2103QWNlBLXsGmthbp9lD9Y4vQOBz57S/ntUPjrBCPH EUEuiiXX+hoYPwu3WfBReHiyvOARF2JMA9aGT31rbK4hRzPK1AZqFotYR0oAYD7i g8Op1gygDaFfLyiZtMIxAmBsgz8MPAjzzW7NAtagcUdnRekSo1CE24IW7hhs+4Fv T94jwW8lZIvdv5PwRSPU =pWOL -END PGP SIGNATURE- -- 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/4ea0281e.5080...@funlabs.org
Re: [OT] Shell Script Apache Log
Amigos, ta dificil aqui uahauhauha será que podem me ajudar? Por algum motivo o script abaixo le todas as linhas mas não 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 é: if [ $(grep -c $linha_tratada $erros_notificados) -eq 0 ]; then A primeira linha ele pega e checa, se é zero, ele cadastra a linha no arquivo certinho, só que quando chega a segunda, terceira, etc… ele não checa mais e da sempre o valor como 0 e ai cadastra linhas iguais no arquivo, mesmo já tendo cadastrado anteriormente, ai envia emails sobre problemas que já foram notificados toda hora. Alguém sabe me ajudar a descobrir o pq q ele não checa todas as vezes? agradeço desde já att Harlei Em 5 de outubro de 2011 01:16, Harlei Liguori Marcelino hligu...@gmail.comescreveu: 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 será diferente mesmo. Alguém sabe como reverter o resultado do print do awk por exemplo para mostrar todas as colunas exceto as primeiras ou algo q faç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 faç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 fé não dá respostas. Só 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
[OT] Shell Script Apache Log
Amigos, apesar de não ser o assunto da lista já tive problemas de Shell Script e recebi diversar ajudas importantes aqui na lista, fora que, talvez exista algum software já escrito que eu possa usar poupando o trabalho de escrever um Shell Script. Preciso urgentemente escrever um Shell Script ou encontrar um Shell Script ou Software que faça a varredura do arquivo de erros do apache de X em X minutos, verifique os erros existentes e os envie por e-mail. Isso teoricamente seria até simples de fazer, agora, o problema todo é como fazer isso e evitar que os mesmos erros sejam enviados 1.000 vezes por email? Por exemplo, se tenho um erro X acontecendo em uma tela muito usada, este erro será gerado milhares de vezes e este script simples não conseguiria checar se o erro já foi enviado por e-mail ou não. Alguém teria algum script q faça algo parecido ou me indicaria algum software? Ou se for o caso, me dê uma luz de como fazer este script? Pensei em algo como guardar em um arquivo texto as linhas que já enviei por e-mail e checar se a linha existe no arquivo, ou algo deste tipo. Será válido? Ou alguém tem alguma outra ideia? Qualquer ajuda é extremamente bem vinda. agradeço desde já att Harlei
Re: [OT] Shell Script Apache Log
Em 5 de outubro de 2011 00:17, Harlei Liguori Marcelino hligu...@gmail.com escreveu: Amigos, ou Software que faç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 fé não dá respostas. Só 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
Re: [OT] Shell Script Apache Log
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 será diferente mesmo. Alguém sabe como reverter o resultado do print do awk por exemplo para mostrar todas as colunas exceto as primeiras ou algo q faç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 faç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 fé não dá respostas. Só 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