desculpa cliquei no enter sem querer.. continuando.. Olá Julio, Fiz a alteração que você sugerio, porém não manda os e-mail.... Por isso tem o if para fazer a checagem e enviar... Com relação a ultima linha não tem problema porque esse script vai ficar ouvindo o catalina.out e so vai enviar um e-mail quando houver um erro no codigo, o erro tem mais de 15 linhas e checo atraves da string que eu setar no codigo. ex. erro: mpb, assim toda vem que aparecer essa linha no log ele me envia por e-mail. Assim ta funcionando certinho conforme a dica do Cleóson: (-A -B)
#!/bin/bash while true; do (tail -f /var/log/apache2/access.log | grep -q "10.1.1.31") if [ "$?" = "0" ]; then grep -i -A5-B3 "10.1.1.31" /var/log/apache2/access.log | mail -s "teste" [email protected] fi done Só que agora to com outro problema. Ele ta buscando todos os erros do log que tem a string erro: mpb Como posso fazer para que pegue semente o últmo??? Abraço, --- Em sex, 3/4/09, Standler meir <[email protected]> escreveu: De: Standler meir <[email protected]> Assunto: Re: [shell-script] Ajuda Iniciante Para: [email protected] Data: Sexta-feira, 3 de Abril de 2009, 14:01 Olá Julio, Fiz a alteração que você sugerio, porém não manda os e-mail.... Por isso tem o if para fazer a checagem e enviar... Com relação a ultima linha não tem problema porque esse --- Em sex, 3/4/09, Julio C. Neves <[email protected]> escreveu: De: Julio C. Neves <[email protected]> Assunto: Re: [shell-script] Ajuda Iniciante Para: [email protected] Data: Sexta-feira, 3 de Abril de 2009, 10:54 Fala Standler, vc pode tranquilamante trocar: *(tail -f /var/log/apache2/ access.log | grep -q "10.1.1.31") if [ "$?" = "0" ]; then grep -i "10.1.1.31" /var/log/apache2/ access.log | mail -s "teste" skf...@gmail. com <skfogo%40gmail. com> * por: *Achei=$(tail -f /var/log/apache2/ access.log | grep "10.1.1.31") && grep -B2 -A5 "$Achei" /var/log/apache2/ access.log | mail -s "teste" skf...@gmail. com <skfogo%40gmail. com> * Mas o que eu acho estranho é que se vc está pegando o dado com* tail -f, *teoricamente esta linha é a última, não existindo as 5 linhas após. Pense nisso, pq talvez seja necessário um* sleep *ou algo do gênero. -- Abração, Julio *Cursos de Shell e Zenity nos finais de semana: - Em SP ligue (11) 2125-4747; - Em DF ligue (61) 3223-3000; - No RJ brevemente; - Turmas fechadas em outras cidades ligue (21) 8112-9988 * 2009/4/3 Standler meir <skf...@yahoo. com.br> > Olá Jimmy, > > Muito obrigado pela contribuição, mas também não resolveu porque não envia > ose-mail´s. > > Andei pesquisando e da forma que estou fazendo não tem como mesmo, porque > o tail não para de rodar, a menos que seja cancelado. até lá, ele vai ficar > rodando, e não vai gerar o log. > > Ai Professor Julio, como sempre com foco e disciplina e com suas dicas > avancei um pouco mais meu script. > > > #!/bin/bash > while true; do > (tail -f /var/log/apache2/ access.log | grep -q "10.1.1.31") > if [ "$?" = "0" ]; then > grep -i "10.1.1.31" /var/log/apache2/ access.log | mail -s "teste" > skf...@gmail. com <skfogo%40gmail. com> > fi > done > > Bom galera acho que nem preciso explicar o script né? afinal aqui só tem > fera e eu estou só engatinhando. > Também sei que esta não é a maneira mais elegante para resolver meu > problema, mas está resolvendo parcialmente. > > Agora galera o que preciso é fazer de uma forma que eu pegue somente 5 > linhas abaixo e duas linhas acima, alguém pode me dar uma ajuda para fazer > uma filtragem legal? > > Mais uma vez grato pela ajuda de todos. > > Abraço > > > > --- Em qui, 2/4/09, jimmy <ronaldo_tgz@ yahoo.com. br<ronaldo_tgz% > 40yahoo.com. br>> > escreveu: > > De: jimmy <ronaldo_tgz@ yahoo.com. br <ronaldo_tgz% 40yahoo.com. br>> > Assunto: Re: [shell-script] Ajuda Iniciante > Para: shell-script@ yahoogrupos. com.br <shell-script% 40yahoogrupos. com.br> > Data: Quinta-feira, 2 de Abril de 2009, 17:58 > > > On Thu, Apr 02, 2009 at 11:14:56AM -0700, Standler meir wrote: > > Se eu fizer assim ele manda o e-mail mas ai não está monitorando: > > > > #!/bin/bash > > > > tail -5 /var/log/apache2/ access.log | grep "10.1.1.31" | mail -s "teste" > skf...@gmail. com > > > > Alguma sugestão? > > tail -5 pega apenas as 5 últimas linhas do arquivo ao invés de "monitorar" > a > inserção de novas linhas, creio que sua necessidade exige algo que > funcione como um daemon > > minha sugestão seria: > > tail -f /var/log/apache2/ access.log | awk '/10\.1\.1\. 31/{system( "mail > -s \"teste\" skf...@gmail. com")}' > > -- > "Não manejo bem as palavras > Mas manipulo bem as strings." > ------------ --------- --------- > > Veja quais são os assuntos do momento no Yahoo! +Buscados > http://br.maisbusca dos.yahoo. com > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas] Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - Celebridades - Música - Esportes Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]
