Supondo que seu sistema seja sempre atualizado automaticamente com apt-get upgrade
, esse script executado por um cronjob pode ser feito:
#!/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 protected]
fi
O script verifica os pacotes pendentes com o seguinte comando
apt-get -su --assume-no dist-upgrade
Opções:
- -s , realiza uma simulação
- -u , imprima uma lista de pacotes atualizados
- -assum-no , "no" automático para todos os prompts
Se houver algum pacote pendente a ser atualizado, recém-instalado ou a ser removido, o script enviará um email para [email protected]
com a lista de pacotes e imprimirá uma mensagem.
Possible alternative: apticron
This package will send daily emails if there are any pending packages. It should also solve your problem, as it also informs about packages that have been kept back.