Como verificar se a senha do sudo foi inserida para esta sessão de terminal?

11

Como dito no título, eu preciso verificar se a senha do sudo foi inserida para esta sessão de terminal em um shell (também conhecido como, se eu tiver direitos de sudo agora).

Se eu tiver, eu gostaria de fazer uma coisa e se eu não tiver, então não deveria me pedir, apenas deixe-me fazer outra coisa.

Então, no pseudo código, é assim:

if (sudo = true)
   echo "i got sudo"
else
   echo "i dont have sudo"
fi

Mas todos os comandos que eu encontrei para isso sempre me pedem a senha sudo ao tentar verificar.

A ideia básica é que o script pode (e vai) pedir a senha sudo em vários lugares, mas eu não quero imprimir "O script agora pedirá sua senha sudo". se já foi introduzido (o que significa que não vai pedir a senha do sudo).

Espero que alguém possa me ajudar.

    
por Moonbloom 12.10.2013 / 18:25

1 resposta

17

Você pode usar:

if sudo -n true 2>/dev/null; then 
    echo "I got sudo"
else
    echo "I don't have sudo"
fi

A opção -n (não interativo) impede que sudo solicite uma senha ao usuário. Se uma senha for necessária para o comando ser executado, sudo exibirá uma mensagem de erro (redirecionada para /dev/null ) e sairá. Se a senha não for necessária, essa expressão será verdadeira: sudo -n true 2>/dev/null .

    
por Radu Rădeanu 12.10.2013 / 18:30