Автоматически обновляет почту только при ошибке или перезагрузке?
У меня установлены автоматические обновления на нескольких серверах, некоторые версии 12, некоторые 14. Я хотел бы включить для них MailOnlyOnError, но все равно хотел бы получать уведомления по электронной почте, когда обновление требует перезагрузки.
Буду ли я получать уведомления о необходимости перезагрузки с включенной MailOnlyOnError?
Спасибо!
2 ответа
Вот решение, основанное на ответе в этом обсуждении. Хитрость в том, что на запрос на перезагрузку указывает наличие файла /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
(Он запускает скрипт email_update_required каждый день в 8 часов, настраивайте по мере необходимости.)
Я применил вышеупомянутый метод к серверу Ubuntu 14.04 с unattended-upgrades
а также MailOnlyOnError true"
и это работает.
Тем не менее, было бы неплохо иметь более "официальный" Ubuntu или автоматический способ получения этих уведомлений. Переключатель похож на MailOnlyOnError
было бы замечательно.
Спасибо @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. Это должно произойти между временем, когда сервер запускает службу, и временем, определенным в
/etc/apt/apt.conf.d/50unattended-upgrades
файл. В противном случае мы не будем уведомлены, так как автоматическая перезагрузка могла уже произойти. Срокиapt-daily-upgrade
сервис можно увидеть, выполнив команду (как обычный пользователь...systemctl status apt-daily-upgrade.timer
).Automatic-Reboot-Time
определяется пользователем. Значение по умолчанию — «сейчас», что обычно не рекомендуется, когда мы хотим предупредить себя о предстоящей автоматической перезагрузке.