无人值守升级仅在出现错误或重启时发送邮件?

无人值守升级仅在出现错误或重启时发送邮件?

我在几台服务器上安装了无人值守升级,有些是版本 12,有些是 14。我想为它们启用 MailOnlyOnError,但仍希望在更新需要重新启动时收到电子邮件通知。

启用 MailOnlyOnError 后我还会收到“需要重新启动”通知吗?

谢谢!

答案1

以下是基于以下答案的解决方案这次讨论. 诀窍在于,文件的存在表明需要重新启动/var/run/reboot-required

创建/usr/local/sbin/email_update_required内容为

if [ -f /var/run/reboot-required ]; then
    echo "A reboot is required following updates to server `hostname`" | mail -s "Reboot Required" <mail-address>
fi

调整<mail-address>(例如,调整为root或您的个人电子邮件地址)。检查权限并使文件可执行。

将以下行放入你的根 crontab ( sudo crontab -e)

00 08 * * * /usr/local/sbin/email_update_required

(它每天 8 点运行 email_update_required 脚本,根据需要进行调整。)

unattended-upgrades我已将上述方法应用到具有和的 Ubuntu 14.04 服务器上MailOnlyOnError true",并且有效。

不过,如果能有一种更“官方”的 Ubuntu 或无人值守升级方式来获取这些通知邮件就好了。类似的开关MailOnlyOnError就更好了。

答案2

感谢@Whatsisname 和@azimut 提出的问题和解决方案。现在是 2023 年,我正在使用 Ubuntu 22.04。虽然解决方案仍然有效,但我对该脚本进行了改进...

# To get ADMIN_EMAIL if defined
[ -f ~/.envrc ] && source ~/.envrc
email_address=${ADMIN_EMAIL:-"root@localhost"}

if [ -f /var/run/reboot-required ]; then
    echo "The server `hostname` will be rebooted, unattended, as per the schedule!" \
        | mail -s "Unattended Reboot" $email_address
fi

从@azimut 之前的回答中可以看出有两点需要注意...

  • 该脚本可以以普通用户身份运行(/var/run/reboot-required任何人都可以读取)

  • 关于 cron 计时。这应该介于服务器运行apt-daily-upgrade服务和文件Automatic-Reboot-Time中定义的时间之间/etc/apt/apt.conf.d/50unattended-upgrades。否则,我们将不会收到通知,因为自动重启可能已经发生。apt-daily-upgrade可以通过运行命令(作为普通用户... systemctl status apt-daily-upgrade.timer)来查看服务的时间。Automatic-Reboot-Time是用户定义的。默认值为“现在”,当我们想要提醒自己即将自动重启时,通常不建议使用这个值。

相关内容