sudo -s
solicitará sua senha uma vez e, em seguida, deixará você sentado em um shell raiz que permanecerá até você exit
. Lá você pode encadear comandos como apt-get update && apt-get upgrade -y && reboot
.
Estou instalando atualizações em várias máquinas e simplesmente quero executar:
sudo apt-get update
sudo apt-get upgrade
sudo reboot
tudo de uma vez em todas as máquinas (depois de horas de curso) e deixá-los rodar sem precisar da minha entrada para senhas. No entanto, os comandos acima não funcionam, porque todos eles exigem permissão de root e, portanto, exigem minha senha toda vez. A execução de todos eles sob um único sudo
concatenado por &&
parece não funcionar. Além disso, se uma atualização tiver notas de lançamento, ela exibirá todas as notas de versão e será interrompida até eu sair do less
.
Como faço isso?
sudo -s
solicitará sua senha uma vez e, em seguida, deixará você sentado em um shell raiz que permanecerá até você exit
. Lá você pode encadear comandos como apt-get update && apt-get upgrade -y && reboot
.
Então você não quer que seu usuário tenha que digitar uma senha para usar o sudo? Você pode adicionar uma linha como essa em /etc/sudoers
ou um arquivo em /etc/sudoers.d/
username ALL=(ALL) NOPASSWD: ALL
Ou apenas permitir alguns programas como reboot
e apt-get
:
username ALL=(ALL) NOPASSWD: /sbin/reboot, /usr/bin/apt-get
Pode querer ver também algumas opções apt-get
como:
-q, --quiet
Quiet; produces output suitable for logging, omitting progress
indicators. More q's will produce more quiet up to a maximum of 2.
You can also use -q=# to set the quiet level, overriding the
configuration file. Note that quiet level 2 implies -y; you should
never use -qq without a no-action modifier such as -d, --print-uris
or -s as APT may decide to do something you did not expect.
Configuration Item: quiet.
-y, --yes, --assume-yes
Automatic yes to prompts; assume "yes" as answer to all prompts and
run non-interactively. If an undesirable situation, such as
changing a held package, trying to install a unauthenticated
package or removing an essential package occurs then apt-get will
abort. Configuration Item: APT::Get::Assume-Yes.
--force-yes
Force yes; this is a dangerous option that will cause apt to
continue without prompting if it is doing something potentially
harmful. It should not be used except in very special situations.
Using force-yes can potentially destroy your system! Configuration
Item: APT::Get::force-yes.
Ou você poderia canalizar cegamente algumas novas linhas ou "q" para apt-get
, eu costumava instalar um pacote que ignoraria as opções apt
como -y
e esperar por uma tecla pressionada (provavelmente em seu prefixo ou script postinst). Poderia tentar algo como:
{
sleep 20
echo
echo "q"
} | apt-get upgrade
E se você está instalando exatamente os mesmos pacotes em todas as máquinas, você não precisa update
e upgrade
de cada um pela internet, você pode baixar todos os arquivos .deb
necessários uma vez com:
sudo apt-get install --download-only [packages]
ou
sudo apt-get upgrade --download-only
em seguida, instale todos eles de uma pasta local / compartilhada com
sudo dpkg -iR /folder_of_debs
A solução mais simples se você for 'root' é
apt-get -y update && apt-get -y upgrade && reboot
E se você for um usuário no sistema, primeiro verifique se o usuário está ativado nos sudoers e digite:
sudo apt-get -y update && apt-get -y upgrade && reboot