Automaticamente atualiza comandos para o sistema do servidor Ubuntu

0

Como apontamos aqui, podemos atualizar rapidamente o sistema Ubuntu executando os comandos empilhados

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

A minha pergunta é como posso colocar os parâmetros que o tornam mais automático, através de asnwering yes , todos pediram confirmações durante esta execução?

    
por Nam G VU 27.04.2015 / 05:42

2 respostas

3

Sempre há alguns riscos de segurança envolvidos na execução de atualizações de software sem supervisão, mas também há benefícios.

Conteúdo

  1. Usando o pacote "atualizações autônomas"
  2. Usando o cron e o aptitude
  3. Usando o cron-apt para lidar com atualizações automáticas

Usando o pacote "atualizações autônomas"

Instale o pacote de upgrades autônomos, caso ainda não esteja instalado

sudo apt-get install unattended-upgrades

Para ativá-lo, faça:

sudo dpkg-reconfigure -plow unattended-upgrades

(é um diálogo interativo) que criará /etc/apt/apt.conf.d/20auto-upgrades com o seguinte conteúdo:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Detalhes sobre o significado desses valores podem ser encontrados no cabeçalho do arquivo /etc/cron.daily/apt .

Nota:

  1. Quando a tarefa apt for iniciada, ela será suspensa por um período aleatório entre 0 e APT :: Periodic :: RandomSleep seconds. O valor padrão é "1800" para que o script fique parado por até 30 minutos (1800 segundos) para que os servidores espelho não sejam esmagados por todos que executam suas atualizações ao mesmo tempo. Somente defina isso como 0 se você usar um espelho local e não se importar com os picos de carga. Note que enquanto a tarefa apt estiver em espera, a execução do resto de suas tarefas cron.daily será atrasada.

  2. Se você quiser que o script gere um conjunto de saída mais detalhado APT::Periodic::Verbose "1";

  3. Se você quiser que o script seja reinicializado automaticamente quando necessário, não apenas precisará definir Unattended-Upgrade :: Automatic-Reboot como "verdadeiro", mas também precisará ter o pacote "update-notifier-common" instalado. Em instalações mínimas, isso não é instalado por padrão e sem ele, o atualizador automático nunca será reinicializado e nem mesmo informará que você precisa reinicializar manualmente se tiver notificações por email configuradas!

e /etc/apt/apt.conf.d/50unattended-upgrades :

// Automatically upgrade packages from these (origin, archive) pairs
Unattended-Upgrade::Allowed-Origins {    
    // ${distro_id} and ${distro_codename} will be automatically expanded
    "${distro_id} stable";
    "${distro_id} ${distro_codename}-security";
    "${distro_id} ${distro_codename}-updates";
//  "${distro_id} ${distro_codename}-proposed-updates";
};

// List of packages to not update
Unattended-Upgrade::Package-Blacklist {
//  "vim";
//  "libc6";
//  "libc6-dev";
//  "libc6-i686";
};

// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you 
// have a working mail setup on your system. The package 'mailx'
// must be installed or anything that provides /usr/bin/mail.
//Unattended-Upgrade::Mail "root@localhost";

// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
//Unattended-Upgrade::Remove-Unused-Dependencies "false";

// Automatically reboot *WITHOUT CONFIRMATION* if a 
// the file /var/run/reboot-required is found after the upgrade 
//Unattended-Upgrade::Automatic-Reboot "false";

Usando o cron e o aptitude

Instale aptitude :

sudo apt-get install aptitude

Crie um novo arquivo:

sudo nano /etc/cron.weekly/apt-security-updates

Copie o seguinte texto para este novo arquivo, salve e saia:

echo "**************" >> /var/log/apt-security-updates
date >> /var/log/apt-security-updates
aptitude update >> /var/log/apt-security-updates
aptitude safe-upgrade -o Aptitude::Delete-Unused=false --assume-yes --target-release 'lsb_release -cs'-security >> /var/log/apt-security-updates
echo "Security updates (if any) installed"

Recentemente (desde o Ubuntu 7.10), a ação 'upgrade' do aptitude está obsoleta. Agora há duas maneiras de atualizar, uma segura (conservadora, se uma atualização precisar adicionar ou remover dependências, não será atualizada) e uma completa (ela sempre será atualizada, mesmo se impactar outros pacotes, adicionando-os ou removendo eles, anteriormente chamados de 'dist-upgrade'). As ações agora são 'upgrade seguro' ou 'upgrade completo'. Veja a página de manual do aptitude (man aptitude) para mais detalhes.

Quando estiver completo, você deseja tornar o arquivo executável. Então, através do terminal, digite a seguinte linha:

sudo chmod +x /etc/cron.weekly/apt-security-updates

Este script será executado uma vez por semana e instalará todos os pacotes disponíveis do repositório de segurança. Ele também gera um registro em / var / log / apt-security-updates para posterior inspeção no caso de algo dar errado.

Esse script gerará informações em um arquivo de log, portanto, para evitar que esse arquivo de log fique muito grande, precisamos garantir que ele seja rotacionado. Para fazer isso, vamos usar o utilitário logrotate, que vem com o Ubuntu. Pressione Alt + F2 e digite este comando:

sudo nano /etc/logrotate.d/apt-security-updates

Cole isso no editor, salve e saia:

/var/log/apt-security-updates {
        rotate 2
        weekly
        size 250k
        compress
        notifempty
}

Isso rotacionará o arquivo de log toda semana (semanalmente), ou se ele tiver mais de 250kB de tamanho (tamanho 250k), compactando versões antigas (compactar). Os dois arquivos de log anteriores serão mantidos (girar 2) e não ocorrerá rotação se o arquivo estiver vazio (notifempty).

Usando o cron-apt para lidar com atualizações automáticas

cron-apt é um programa que atualiza automaticamente pacotes de software usando um cron job. apt-get, aptitude ou apt-file podem assumir.

Instale aptitude :

sudo apt-get install aptitude

Instale cron-apt :

sudo apt-get install cron-apt

A configuração pode ser feita editando /etc/cron-apt/config e adicionando regras a /etc/cron-apt/action.d/ . As variáveis que você pode definir em /etc/cron-apt/config está documentado no exemplo de configuração em /usr/share/doc/cron-apt/examples/config

Dois arquivos são criados:

/etc/cron-apt/action.d/0-update
/etc/cron-apt/action.d/3-download

Abra 3-download em um terminal:

sudo nano /etc/cron-apt/action.d/3-download

O conteúdo

dist-upgrade -d -y -o APT::Get::Show-Upgraded=true

significa que dist-upgrade é executado, mas apenas os pacotes são baixados e não são instalados.

Se você quiser instalar tudo com um martelo, remova os parâmetros "-d".

Fonte

    
por A.B. 27.04.2015 / 08:29
1

Você pode fazer

sudo apt-get -y upgrade

isso assumirá que sim para a maioria das coisas. Em alguns casos em que sim pode ser indesejável, o comando será anulado.

Uma opção mais arriscada é

sudo apt-get --force-yes

isto não é recomendado, pois pode dizer sim a algo que irá quebrar o seu sistema. Para mais detalhes sobre estas opções você pode executar o comando

man apt-get
    
por Julian Stirling 27.04.2015 / 06:08