1

Я автоматизировал apt-get update && apt-get upgrade , используя пакет unattended-upgrades вместе с anacron . Имеет смысл, что при unattended-upgrades apt-get dist-upgrade не выполняется, поскольку существует риск поломки.

Однако, по крайней мере, я хотел бы знать, что есть пакеты, доступные для dist-upgrade(например, mail to root). Я не хочу проверять это снова и снова.

Как я могу это сделать ?

1 ответ1

1

Предполагая, что ваша система всегда автоматически обновляется с помощью apt-get upgrade этот скрипт, запущенный cronjob, может сделать это:

#!/bin/bash

# Optional run this command first if not using automatic upgrades
# sudo apt-get update && sudo apt-get upgrade -y

pkglist=$(apt-get -su --assume-no dist-upgrade)
pending=$(echo "$pkglist" | grep -oE "[0-9]+ upgraded, [0-9]+ newly installed, [0-9]+ to remove and [0-9]+ not upgraded\.")
upgraded=$(echo "$pending" | grep -oE "[0-9]+ upgraded" | cut -d' ' -f1)
installed=$(echo "$pending" | grep -oE "[0-9]+ newly installed" | cut -d' ' -f1)
removed=$(echo "$pending" | grep -oE "[0-9]+ to remove" | cut -d' ' -f1)
count=$(( $upgraded + $installed + $removed ))
if [ "$count" -ne "0" ]; then
  echo "$count pending packages to upgrade/install/remove, sending email"
  echo "$pkglist" | mail -s "dist-upgrade: $count pending packages" email@example.com
fi

Скрипт проверяет наличие ожидающих пакетов следующей командой

apt-get -su --assume-no dist-upgrade

Опции:

  • , выполняет симуляцию
  • распечатать список обновленных пакетов
  • -assume-no, автоматическое "нет" на все запросы

Если есть какие-либо ожидающие обновления пакеты, которые будут обновлены, установлены или удалены, сценарий отправляет электронное письмо на адрес электронной почты email@example.com со списком пакетов и распечатывает сообщение.

Возможная альтернатива: apticron

Этот пакет будет отправлять ежедневные электронные письма, если есть какие-либо ожидающие решения пакеты. Это также должно решить вашу проблему, так как он также сообщает о пакетах, которые были сохранены обратно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .