これまで:
#!/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
/var/log/dirsrv/redacted-domain/audit
ファイルからgrep一致コンテンツをインポートして電子メールに入れたいです[email protected]
。上記のループを使用してgrepステートメントを電子メール自体に配置することは、重複しているように感じます(とにかく機能しません)。
申し訳ありません。 grepingの例を含める必要がありました。
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
タイプの一致を見つけて、^全体をEメールで返したいです。
答え1
2つのオプションがあります。
1つは今のようにEメールを送信することです(https://stackoverflow.com/questions/5155923/sending-a-mail-from-a-linux-shell-script)
cat /path/to/file | mail -s "your subject" [email protected]
私はあなたがこれを定期的に実行し、いくつかのcrontabスクリプトからこの電子メールを送信することを想像しています。その場合は、crontabの上部にを入力してください[email protected]
。
[email protected]
0 * * * * /path/to/your/script
この場合、サーバーは電子メールを送信し、内容はスクリプトが標準出力に出力する内容になります。スクリプトが何も印刷しない場合、電子メールは送信されません。これにより、mail
電子メールを送信するためにスクリプトがプログラムを処理する必要がなくなります。 grepに一致する行を印刷するように要求すると、電子メールで送信されます。問題はテーマをそのように変更することはできませんが、コンテンツに行を追加するのも効果があると思います。