Digite a senha apenas uma vez para shell script

Digite a senha apenas uma vez para shell script

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 sudoa 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-getcomandos, o seguinte tem o -ysinalizador 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"

informação relacionada