Script para enviar e-mail se grep result for null

2

tem sido um longo tempo e eu não consigo lembrar como fazer isso. Eu estou tentando grep um arquivo de log para uma palavra ou palavras e e-mail, se não existir nos últimos quinze minutos (eu vou estar definindo um cron job a cada quinze minutos, a menos que haja uma maneira melhor de fazê-lo) o que eu tenho até agora é

if grep --quiet 'SEND OK' /logfile; then
  echo exists
else
  echo not found | mail -s "houston we have a problem" [email protected]
fi

posso usar o tail para verificar o arquivo de log nos últimos 15 minutos? faz | tail -15 fazer o truque?

e posso dar um "if" para me enviar um email se ele não encontrar a palavra-chave nos últimos 15 minutos, pois ela será executada a cada quinze minutos

Eu apreciaria muito qualquer ajuda

    
por Brian 09.05.2015 / 07:40

2 respostas

0

Se você está tentando ver os últimos N minutos do arquivo (pelo menos o conteúdo do arquivo escrito desde a última vez que seu script foi executado), então você precisa de algo como logtail ( link ). Isso pode já estar disponível em sua distribuição. tail por si só não ajudará, pois só lhe dará as últimas N linhas / caracteres, independentemente de quando foram escritos.

    
por 09.05.2015 / 11:05
0

Se em seu log você tem informações de data e hora (acho que sim), você pode preponed para seu grep outro grep para filtrar data e usar -A {{big_number}} para obter todas as linhas de 15 minutos atrás para agora.

Algo parecido com:

grep "$(date -d "15 minutes ago" +"{{your_log_date_format}}")" -A {{ big_number }} /logfile | grep --quiet 'SEND OK'

Este é o caminho sujo (você pode ter problema se o {{big_number}} for menor que as linhas escritas no log nos últimos 15 minutos).

Os créditos vão para: link .

    
por 09.05.2015 / 18:44

Tags