|
From: | Robson Alexandre |
Subject: | Re: [shell-script] Enviando email com tail -f |
Date: | Sat, 3 Jan 2015 17:44:03 -0200 |
Em qual script Alfredo?
[1] http://pastebin.com/WTRrzavw
[2] http://pastebin.com/PeJeqwZA
[3] http://pastebin.com/YLW1yg2J
Att,
Robson Alexandre
Acho que sobrou um "while" ali, não?
On Fri Jan 02 2015 at 3:41:55 PM Robson Alexandre address@hidden [shell-script] <address@hidden> wrote:Então fiz da seguinte forma:Obrigado Julio pela resposta,testei sua solução, mas ela apresentou o mesmo problema. Só matando o tail para caso o grep encontre a string enviar o email.
http://pastebin.com/WTRrzavwPS: Acredito que na primeira mensagem o while após o && saiu por engano, rsrs.Meu intuito em utilizar tail -n0 era de não armazenar buffer de n linhas e sair cuspindo tudo o que ele recebesse, e como o problema todo está no grep que fica esperando alguma sinalização de final do que é enviado para ele (acredito eu), vi que ele tem uma opção
--line-buffered, mas que no man diz ser um problema na performance do comando.Ou como o man recomenda não utilizar o --line-buffered, passar o grep para dentro do while que será disparado pelo tail
http://pastebin.com/YLW1yg2JAtenciosamente
Robson AlexandreEm 26 de dezembro de 2014 16:47, 'Julio C. Neves' address@hidden [shell-script] <address@hidden> escreveu:Fala Robson,Qdo vc usa -n1 no tail, vc está mandando só uma linha (a última). Com -n0, vc não está mandando nenhuma. Acho que teu erro está aí.Por outro lado, se o último registro de /var/messages não tiver a cadeia que vc pesquisa com o grep, o retorno será uma cadeia vazia que será enviada por email. Acho que essa lógica deve estar furada. Creio que vc queira algo mais ou menos assim:
while true
do
Linha=$(tail -Fn1 /var/log/messages)
grep "[ACESSO]" <<< "$Linha" && while
/usr/bin/esmtp address@hidden <<< "$Linha"
done &Não testei, mas deve ser algo mais ou menos assim.Em 26 de dezembro de 2014 15:43, Robson Alexandre address@hidden [shell-script] <address@hidden> escreveu:Robson AlexandreAtenciosamenteAlguém poderia dar uma dica?Fiz uma outra tentativa colocando timeout no read sem sucesso.O que ocorre é que apenas quando o processo PID do tail é finalizado, o script completa sua execução enviando os emails.grep "[ACESSO]" <(tail -Fn0 /var/log/messages) | while read line#!/bin/bashBoa tarde a todos,na tentativa de quando ocorrer novos registros no meu arquivo de logs, enviá-los por email fiz o simples script abaixo:
doecho $line | /usr/bin/esmtp address@hiddendone &
[Prev in Thread] Current Thread [Next in Thread]
- Re: [shell-script] Enviando email com tail -f, Robson Alexandre, 2015/01/02
- Re: [shell-script] Enviando email com tail -f, Alfredo Casanova, 2015/01/02
- Re: [shell-script] Enviando email com tail -f, Robson Alexandre <=
- Re: [shell-script] Enviando email com tail -f, Rodrigo Cunha, 2015/01/04
- Prev by Date: Re: Problema com redirecionamento stderr dpkg-query
- Next by Date: Re: [shell-script] Enviando email com tail -f
- Previous by thread: Re: [shell-script] Enviando email com tail -f
- Next by thread: Re: [shell-script] Enviando email com tail -f
- Index(es):