到目前为止:
#!/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
我想从文件中获取 grep 匹配项的内容/var/log/dirsrv/redacted-domain/audit
并将它们放入电子邮件中以发送到[email protected]
. 使用上述循环将 grep 语句放入电子邮件本身是多余的(并且无论如何都不起作用)。
对不起,我应该包括一个正在被 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
我想找到匹配的类型add: member
并将整个 ^ 返回到电子邮件中。
你有两个选择。
一种是按照您的方式发送电子邮件(https://stackoverflow.com/questions/5155923/sending-a-mail-from-a-linux-shell-script)
我想您会定期执行此操作,并通过某个 crontab 脚本发送此电子邮件。在这种情况下,请在 crontab 的顶部键入
[email protected]
。在这种情况下,服务器将发送一封电子邮件,其中的内容将是您的脚本在标准输出上输出的任何内容。如果脚本没有打印任何内容,则不会发送电子邮件。这样您就不必处理
mail
脚本中的程序来发送电子邮件。只需让您的 grep 打印匹配行,它们将通过电子邮件发送。问题是,你不能那样改变主题,但我想在内容中多写一行也可以。