A maneira recomendada de fazer isso é usar o comando unattended-upgrades
. Configurá-lo é simples:
apt-get install unattended-upgrades
dpkg-reconfigure unattended-upgrades
Isso é tudo o que você precisa para obter os resultados do que você pretende em seu script cron. Não há necessidade de reinventar a roda.
No que diz respeito ao seu script e ao seu relatório de sucesso, qualquer código de retorno diferente de zero é considerado uma falha. Seu script considera que qualquer não-1 é um sucesso. Não há necessidade de verificar os códigos de saída manualmente, isso é o que o if
faz.
if apt-get upgrade -y; then
echo "$(date): Daily update successful" >> $captains_log
else
echo "$(date): Daily update failed" >> $captains_log
fi
Quando o shell tem um "comando não encontrado", um código de saída de 127 é retornado.