
Eu criei um script de shell para atualizar e atualizar meus pacotes existentes de uma só vez. O roteiro é:
#!/bin/bash
sudo apt-get update;
sleep 10;
sudo apt-get upgrade;
sleep 10;
sudo youtube-dl -U;
sleep 10;
sudo shutdown -h now;
exit 0
O problema que estou enfrentando é que como minha conexão com a internet não é muito rápida, quando chega ao terceiro comando, a sessão de senha expira e tenho que digitar minha senha novamente. E para isso eu tenho que ficar na frente do meu PC o tempo todo, o que na verdade vai contra o propósito do script.
Então, minha pergunta é:
Existe alguma maneira pela qual eu possa armazenar a senha em uma variável e a cada vez que
sudo
a senha for inserida na variável para que eu não precise ficar perto do meu computador o tempo todo? (ou qualquer coisa semelhante que faria o que eu quero)
Algo assim:
#!/bin/bash
printf "Please enter your password: ";
read -s password
sudo apt-get update;
$password
sleep 10;
sudo apt-get upgrade;
$password
sleep 10;
sudo youtube-dl -U;
$password
sleep 10;
sudo shutdown -h now;
$password
exit 0
Responder1
Remova o sudo dos comandos no script e execute o script real como root, por exemplo.
#!/bin/bash
apt-get update;
sleep 10;
apt-get upgrade;
sleep 10;
youtube-dl -U;
sleep 10;
shutdown -h now;
exit 0
E execute-o comsudo ./my-script.sh
Responder2
Isso permitirá que você insira a senha uma vez. Para os apt-get
comandos, o seguinte tem o -y
sinalizador definido como "Sim automático para prompts" para tudo, exceto dist-upgrade
.
sudo bash -c "apt-get -y update && apt-get dist-upgrade && youtube-dl -U && apt-get -y autoremove && apt-get -y autoclean && shutdown -h now"