Insira a senha apenas uma vez para o shell script

0

Eu fiz um script de shell para atualizar o & atualizar meus pacotes existentes de uma só vez. O script é:

#!/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 enfrento é 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 eu tenho que digitar minha senha novamente. E para isso eu tenho que estar na frente do meu PC o tempo todo que na verdade derrota o propósito do script.

Então, minha pergunta é :

Is there anyway by which I can store the password in a variable and on every sudo the password is entered from the variable so that I don't have to be near my computer the whole time? (or anything similar that would do what I want)

Algo parecido com isto:

#!/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
    
por rtecxs 19.04.2016 / 14:51

2 respostas

2

Remova o sudo dos comandos do 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 com sudo ./my-script.sh

    
por Android Dev 19.04.2016 / 15:16
0

Isso permitirá que você coloque a senha uma vez. Para os comandos apt-get , o seguinte possui o sinalizador -y configurado 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"
    
por jbrock 19.04.2016 / 15:35