Você perguntou:
how I can provide my password repeatedly to the script?
e a resposta do ewatt mostra uma maneira direta de fazer isso.
Usar o sinalizador "NOPASSWD" para a regra "sudo mycmd" evitaria perguntar sua senha, como ewatt mencionou.
Como alternativa, se você não quiser codificar sua senha em um script, diga ao sudo que está OK armazenar em cache a senha desse comando específico até a próxima reinicialização, definindo o timestamp_timout para um valor negativo. Aqui, eu defini um alias para o comando (arbitrariamente substituído como /tmp/mycmd.sh) e usei isso na definição Defaults
.
Cmnd_Alias MYCMD = /tmp/mycmd.sh
Defaults!MYCMD timestamp_timeout=-1
tim ALL = MYCMD
Como alternativa, você poderia definir um padrão de tempo limite no nível do usuário:
Defaults:tim timestamp_timeout=-1
... o que significaria que o seu timestamp para qualquer comando sudo seria armazenado em cache até a próxima reinicialização.
Ou ainda os tempos limite para qualquer comando e qualquer usuário, mas em um host >> especial:
Defaults@thishost timestamp_timeout=-1
Configurar o timestamp_timeout dessa maneira permite que o sudo armazene em cache sua senha após a primeira vez que você a digita.
Se você implementar uma das opções Defaults
para evitar inserir sua senha durante cada loop do script, mas preferir a rede de segurança de inserir sua senha para atividades separadas, execute sudo -k
para informar ao sudo " mata "(ou redefine) seu timestamp, para que você seja solicitado na próxima vez. Note que você irá reiniciar este processo "em cache" ... "reset" cada vez que você autenticar no sudo.
Se "até a próxima reinicialização" for muito longo para você, defina-o para um valor que seja maior "o suficiente" do que 10000 segundos - em minutos, portanto, mais de 166! - para permitir que você perceba e insira a senha para cada loop.