Linuxサーバーがシャットダウンまたは再起動したときに警告メールを送信する

Linuxサーバーがシャットダウンまたは再起動したときに警告メールを送信する

当社にはSLES 12 SP1サーバーがあります。サーバーの再起動時に通知を送信するように、2つの個別の構成を作成しました。特に、サーバーがダウンしたときに1つのEメールを送信し、サーバーが機能しているときに別のEメールを送信するようにしました。起動時に電子メールを送信するように設定された警告は正常に機能します。

ただし、残念ながらシャットダウン通知はシャットダウンプロセス中ではなく、サーバーの起動後に表示されます。時には生成されないこともあります。

再起動または終了中にすぐに電子メールを送信するには、どこで変更する必要がありますか?

スクリプト。

/etc/systemd/system/ShutDownMail.service

Description=Sending Alert Emails on System shutdown.
Requires=network.target
Before=shutdown.target reboot.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/Scripts/BootMail.sh shutdown

[Install]
WantedBy=multi-user.target

/script/BootMail.sh

#! /bin/sh
EMAIL="[email protected]"
SUBJECT="[$HOSTNAME] - System $1"

if [ "$1" = startup ]
then
    ACTION="started successfully at"
else
    ACTION="is shutting down. The Shutdown process started at"
fi

BODY="This is an automated message to notify you that %s %s.\nDate and Time: %s\n"

printf "$BODY" "$HOSTNAME" "$ACTION" "$(date)" | mail -s "${SUBJECT}" "${EMAIL}"

午前10時59分に通知メールが届きました。終了通知メールが生成されない場合があります。電子メールを送信する前に、電子メールプロセスが終了することがあります。

終了通知メール

通知メールを開始


init 6が起動したときのメールです。

ベストアンサー1

ほとんどのメールプログラムは単にメッセージをキューに入れてから、別のプロセスがキューをチェックしてメッセージを送信します。したがって、プロセスもトリガーする必要があります。たとえば、sendmailを使用している場合は、スクリプトにaを追加してsudo sendmail -qfキューをフラッシュするか、コメントで述べたようにa postfix flush。そのエントリを追加したりAfter=sendmail.serviceサフィックスを追加したりすると、キュー処理デーモンがまだ実行されていることを確認できます。

おすすめ記事