リアルタイムログファイルを追跡し、一致を電子メールで出力します。

リアルタイムログファイルを追跡し、一致を電子メールで出力します。

これまで:

#!/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に一致する行を印刷するように要求すると、電子メールで送信されます。問題はテーマをそのように変更することはできませんが、コンテンツに行を追加するのも効果があると思います。

関連情報