Meu arquivo de log contém as 3 entradas de log a seguir:
2017-11-16 15:50:45 1eFLV7-0003so-Cd <= <> R=1eFLV7-0003sZ-4v U=Debian-exim P=local S=1853 T="Mail delivery failed: returning message to sender" from <>
2017-11-16 15:50:45 1eFLV7-0003so-Cd => [email protected] R=dnslookup T=remote_smtp H=smtp-51.xxx.com [xxx.xx.xx.xx] X=TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128
2017-11-16 15:50:45 1eFLV7-0003so-Cd Completed
Desejo que um e-mail seja enviado para mim, quando uma entrada "Falha na entrega de e-mail*[email protected]" aparecer no arquivo de log.
Como posso conseguir isso?
Talvez o SEC - Simple Event Correlator possa me ajudar?
Mas a configuração abaixo (padrão) não funciona para mim.
type=SingleWithThreshold
ptype=RegExp
pattern=Mail delivery failed: returning message to sender*[email protected]
desc=Problem with mail [email protected]
action=pipe '%s' /usr/bin/mail -s 'ERROR SEND MAIL' [email protected]
window=1
thresh=1
Você está usando
SingleWithThreshold
e esperando que o * corresponda a duas linhas - não. TentePair
.Algo como (não testado),
Qualquer coisa que você tente precisa lidar com o fato de que você tem duas linhas de texto, separadas por uma nova linha. Muitas ferramentas de processamento de texto funcionarão em linhas individuais, e o caractere asterisco não contornará isso olhando também para a próxima linha.
Pelo que entendi, você deseja corresponder a duas linhas consecutivas originárias do mesmo arquivo de entrada. Se for esse o caso, a solução mais fácil seria usar o padrão RegExp2. Na verdade, a SEC opera no modo de várias linhas o tempo todo, sem nenhuma opção de linha de comando especial, e o número de linhas correspondentes a qualquer padrão é definido com a palavra-chave 'ptype'. Aqui está a regra que pode ser útil para você:
Nesta regra, 'RegExp2' significa "uma expressão regular que corresponde a 2 linhas consecutivas". Por padrão, essas linhas devem ser originadas do mesmo arquivo, mas a opção de linha de comando --jointbuf remove essa restrição. No entanto, em circunstâncias normais, você não gostaria de usar esta opção, pois ela coloca eventos de todas as fontes no mesmo buffer de entrada para correspondência de várias linhas, mas a ordem dos eventos não é determinada.
Na regra de exemplo acima, observe também a expressão regular:
Como por padrão .* não corresponde à nova linha, a expressão também utiliza \n para corresponder ao caractere de nova linha.
Por fim, também gostaria de convidá-lo a postar mais perguntas sobre a SEC em sua lista de discussão ( https://sourceforge.net/p/simple-evcorr/mailman/simple-evcorr-users/ ), pois vários usuários experientes estão seguindo, que podem responder prontamente a perguntas semelhantes.
Atenciosamente, risto