Linux

在 Linux 伺服器關閉或重新啟動時發送警報電子郵件

  • October 24, 2018

我的公司有 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,請添加到您的腳本 asudo sendmail -qf以嘗試刷新隊列,或者如您在評論中所說的 a postfix flush。也許添加After=sendmail.service的或後綴等效項也將確保隊列處理守護程序仍在執行。

引用自:https://unix.stackexchange.com/questions/477446