Até agora com:
#!/bin/bash
tail -fn0 /var/log/dirsrv/redacted-domain/audit | \
while read line ; do
echo "$line" | grep -C 5 -i "add: member"
if [ $? = 0 ]
then
mail -s "New User Added" [email protected] > /dev/null
fi
echo "$line" | grep -C 5 -i "add: nsaccountlock"
if [ $? = 0 ]
then
mail -s "Account Disabled" [email protected] > /dev/null
fi
done
Eu quero pegar o conteúdo das correspondências grep do arquivo /var/log/dirsrv/redacted-domain/audit
e jogá-las em um e-mail para [email protected]
. Parece redundante (e não funciona de qualquer maneira) lançar a instrução grep no próprio email com o loop acima.
Desculpe, devo incluir uma amostra do que está sendo grepped:
time: 20200114133315
dn: cn=users,cn=groups,cn=accounts,dc=ipa,dc=domain,dc=com
result: 0
changetype: modify
add: member
member: uid=example_user,cn=users,cn=accounts,dc=ipa,dc=domain,dc=com
Quero encontrar uma correspondência de tipo add: member
e retornar o ^ inteiro em um e-mail.
Você tem duas opções.
Uma é enviar e-mail como você está fazendo ( https://stackoverflow.com/questions/5155923/sending-a-mail-from-a-linux-shell-script )
Suponho que você faça isso regularmente e envie este e-mail de algum script crontab. Nesse caso digite na parte superior do seu crontab
[email protected]
.Nesse caso, o servidor enviará um e-mail onde o conteúdo será qualquer que seja a saída do seu script na saída padrão. Se o script não imprimir nada, o e-mail não será enviado. Dessa forma você não precisa lidar com
mail
programa em um script para enviar um e-mail. Basta deixar seu grep imprimir as linhas correspondentes e elas serão enviadas por e-mail. O problema é que você não pode mudar o assunto dessa maneira, mas uma linha adicional no conteúdo também seria boa, eu acho.