Caro Standler, acredito que a melhor opção para fazer o que você deseja seja algo como:
# tail -f -n 0 $LOGFILE | grep $PATTERN | while read LINHA do mail ... done Com a opção "-n 0" o tail só vai pegar linhas novas (após você dar o comando) para monitorar, e com o "while read" você vai poder realizar os comandos para aquela única linha sem se preocupar em ficar "preso" ao tail. Standler meir wrote: > 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.
