当社には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
サフィックスを追加したりすると、キュー処理デーモンがまだ実行されていることを確認できます。