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
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
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
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"