PDA

Ver Versão Completa : Rodando múltiplos comandos usando o sudo, no Linux e UNIX



gu1le
11-05-2017, 07:23
2017





Como rodar múltiplos comandos usando o sudo, no Linux e UNIX?



Eu posso usar uma técnica muito simples, para rodar múltiplos comandos — que precisem de privilégios administrativos.



Se eu já sei como rodar um comando atrás do outro, em fila, como no exemplo abaixo, talvez saiba que, ao fazer isto com o sudo, freqüentemente a senha dada “perde a validade”, deixando a seqüencia de comandos em espera.


Para rodar uma seqüencia de comandos, uso o ‘&&’, desta forma:


comando1 &&; comando2 && comando3



Se quiser que eles tenham privilégios de root, em tese, bastaria isso:



sudo comando1 && sudo comando2 && sudo comando3



Depois disto, eu vou embora pra casa, fazer qualquer outra coisa, confiante de que as 3 tarefas serão realizadas, sem interrupção — uma logo após a outra.



O problema, nesta linha de raciocínio, surge quando a gente se lembra que o tempo padrão de “validade” do comando sudo é 15 minutos. Decorrido este prazo, o sudo volta a pedir a senha do usuário.



Desta forma, transcorridos os 15 minutos, a sua linha de comandos poderá ainda estar parada e sem conclusão — esperando pela senha.



Para evitar esta chatice, rodo a seqüência com o sudo, usando o interpretador de comandos sh com a opção ‘-c’:



sudo sh -c 'comando1 && comando2'



Com esta formação, eu também posso usar o bash, se quiser:


sudo bash -c 'comando1 && comando2'



Pode ser útil usar esta técnica quando se quiser deixar o sistema sendo atualizado — tarefa na qual, comumente, uso 2 comandos (no Debian/Ubuntu):


sudo sh -c 'apt update && apt -y full-upgrade'



O que este comando faz:



sudo — como eu já sei, confere superpoderes a tudo o que vem depois, nesta mesma linha de comando.


sh — abre uma shell do interpretador de comandos Dash padrão do Linux/Unix.


-c — executa os comandos, que seguem entre as aspas.



Ainda, com o comando apt, o exemplo abaixo roda a opção de atualização com os repositórios, antes de instalar um programa:



sudo -- sh -c 'apt update && apt install -y thermald'




Até Breve.




Fonte: Elias Praciano (https://elias.praciano.com/2017/05/como-rodar-multiplos-comandos-usando-o-sudo-no-linux-e-unix/)