Acabei usando o sinalizador -k do sudo para invalidar o registro de data e hora. então eu adicionei o sinalizador a cada chamada do sudo e deixei passar a senha.
Eu tenho um script de shell principal que solicita ao usuário sua senha. Eu então gostaria de chamar um script de espera ao passar a senha para ele. Este script espera executará 3 comandos sudo.
Eu sei que as caixas de linux que meu script vai rodar tem timestamp_timeout configurado para algum valor em seus sudoers. Meu problema é que tenho uma ideia geral de como escrever isso, mas não sei como lidar com os seguintes casos:
1) Eu posso enviar a senha para o primeiro comando sudo. Esse sudo excluirá um diretório grande que pode levar vários minutos para ser excluído, o que pode ou não ser maior que o valor timestamp_timeout definido. Então, como posso fazer esperando um prompt de senha para o meu segundo e terceiro comandos sudo opcional.
2) Digamos que por algum motivo estranho o script morre ou o usuário o aborta. Quando ele tenta executá-lo novamente, ainda estamos dentro do tempo de timestamp_timeout. Isso requer que a senha esperada para o primeiro comando seja opcional também.
Aqui está o que eu tenho até agora:
#!/usr/bin/expect
set password [lindex $argv 0]
spawn sudo rm -rvf /mnt/repo
expect "*?assword:*"
send "$password\r"
send "sudo mkdir -v /mnt/hwrrepo"
expect "*?assword:*"
send "$password\r";
send "sudo chmod -R 777 /mnt/hwrrepo"
expect "*?assword:*"
send "$password\r";
interact