Expect e sudo timeout

0

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
    
por Codrguy 01.03.2013 / 04:21

1 resposta

0

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.

    
por 01.03.2013 / 08:35