sudo command após uma longa chamada de espera sem re-solicitar a senha sudo

4

Eu estou tentando escrever uma função bash simples que dorme X-number of mins e, em seguida, executa um comando de suspensão do sistema (para mim é sudo pm-suspend desde que eu estou no Ubuntu) agora a função é assim:

function sleepin {
  sleep $(bc <<< $1*60); sudo pm-suspend
}

O primeiro argumento é depois de quantos minutos o sono deve acontecer. O problema é que depois do sono o script me pede a senha do sudo.

Como devo reescrever o script para que ele não solicite a senha sudo após o sono?

(Eu tentei chamar sudo sleepin 30 , mas ele ainda me pede a senha. Note que se a chamada do sono for pequena o suficiente, o bash não solicita a senha, mas por um longo período de tempo ela irá ...)

    
por buren 23.08.2013 / 10:55

3 respostas

3

Como o Mat sugeriu, você pode permitir que o usuário execute o pm-suspend sem uma senha.

Executar sudo visudo

Adicione youruser ALL=(root) NOPASSWD: /path/to/pm-suspend

    
por 23.08.2013 / 11:38
2

Indo em uma tangente: existe alguma razão em particular para você não querer usar o daemon?

echo 'pm-suspend' | sudo at now + 15 minutes

pode ser um ponto de partida.

    
por 23.08.2013 / 13:36
2

Coloque o sono dentro do comando sudo.

seconds=$(($1 * 60))
sudo sh -c "sleep $seconds; pm-suspend"
    
por 26.08.2013 / 02:21