Linux
在 Linux 伺服器關閉或重新啟動時發送警報電子郵件
我的公司有 SLES 12 SP1 伺服器。我已經完成了 2 個單獨的配置,以在伺服器重新啟動時提醒我,更明確地說,伺服器關閉時的電子郵件和啟動時的另一封電子郵件。配置為在啟動期間發送電子郵件的警報工作正常。
但不幸的是,我不是在關機過程中而是在伺服器啟動後收到關機警報。有時它甚至不會生成。
我應該在哪裡進行更改以在重新啟動或關機期間立即發送電子郵件。
腳本。
/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
/Scripts/BootMail.sh
#! /bin/sh EMAIL="Raneesh@mycomp.com" 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 的電子郵件。
大多數郵件程序將簡單地將消息放入隊列中,並且一個單獨的程序將檢查隊列並發送郵件。因此,您還需要觸發該過程。例如,如果使用 sendmail,請添加到您的腳本 a
sudo sendmail -qf
以嘗試刷新隊列,或者如您在評論中所說的 apostfix flush
。也許添加After=sendmail.service
的或後綴等效項也將確保隊列處理守護程序仍在執行。