
Eu tenho um aplicativo da web simples e muito pequeno e queria tornar minha vida um pouco mais fácil com um script de implantação muito simplista, que faz o seguinte:
- Extrair atualizações do git
- Execute o compositor
- Alterar proprietário de todos os arquivos
O script basicamente funciona bem e se parece com isto:
#!/bin/bash
echo "Updating repository ...";
sudo git pull;
echo "Installing composer dependencies from lockfile ...";
composer install;
echo "Changing owner to www-data:www-data ...";
sudo chown -R www-data:www-data .;
echo "Deployment DONE!";
No entanto, como você pode ver, tenho dois comandos executados como sudo neste script. Ou seja, o git pull
e o chown
.
Meu problema é o seguinte: estou ciente de que há um tempo limite para a frequência com que o sistema solicita minha senha ao executar comandos com o sudo. O problema é que, mesmo estando dentro do tempo limite, o scriptsemprepede a senha nosegundoComando sudo (chown).
Alguém poderia me esclarecer, por que esse pode ser o caso?
Responder1
Eu realmente não sei qual é o motivo, mas há solução:
if [[ $(id -u $(whoami)) != 0 ]]
then
sudo bash $( cd $(dirname $0) ; pwd -P )
# taken from http://stackoverflow.com/a/4774063/2797066
else
#rest of script
fi
Responder2
Por que você não executa um script sudo
assim:
sudo bash /path/to/script.sh
Onde script.sh
tem o seguinte conteúdo sem sudo
:
#!/bin/bash
echo "Updating repository ...";
git pull;
echo "Installing composer dependencies from lockfile ...";
composer install;
echo "Changing owner to www-data:www-data ...";
chown -R www-data:www-data .;
echo "Deployment DONE!"
Dessa forma, o script solicitará a senha apenas uma vez.