在 Linux 服务器关闭或重新启动时发送警报电子邮件

在 Linux 服务器关闭或重新启动时发送警报电子邮件

我的公司有 SLES 12 SP1 服务器。我做了两个单独的配置,以便在服务器重新启动时提醒我,更明确地说,是在服务器关闭时发送一封电子邮件,在服务器启动时发送另一封电子邮件。配置为在启动期间发送电子邮件的警报工作正常。

但不幸的是,我不是在关闭过程中而是在服务器启动后收到关闭警报。有时它甚至不会生成。

我应该在哪里进行更改以在重新启动或关闭期间立即发送电子邮件。

脚本。

/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

/脚本/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,请在脚本中添加 asudo sendmail -qf来尝试刷新队列,或者如您在注释中所说的 a postfix flush。也许添加After=sendmail.service或后缀等效项也将确保队列处理守护进程仍在运行。

相关内容