Como desligar a máquina sem cabeçalho usando um script

3

Eu tenho um aplicativo Java que inicia automaticamente quando a máquina sem cabeçalho (Ubuntu 14.04 Server) é inicializada e executada como usuário. Quando a aplicação terminar, eu preciso executar um script para desligar, porque um disjuntor externo está prestes a ser lançado, o que cortará a energia.

Não posso permitir a suspensão se detectar erros de desligamento na próxima inicialização.

Minhas tentativas de escrever um script resultam em uma solicitação para a senha do superusuário. Eu posso aceitar a senha estar presente no texto em um script como a máquina está isolada da internet.

Eu não sou proficiente em bash ou Linux.

permissões de script:

$ ls -la shutdown
-rwsr-xr-x 1 root root 209 Mar 18 16:55 shutdown
    
por Nate Lockwood 20.03.2015 / 17:44

1 resposta

7

Existem várias maneiras de fazer isso. O mais simples e pior é ter a senha no script, como você sugere. Como seu computador não está conectado à Internet, a maioria das preocupações de segurança é discutível e você pode usar a opção sudo -S que permite passar a senha de STDIN:

echo password | sudo -S shutdown -h now

Uma abordagem mais segura é permitir que um usuário específico execute o comando shutdown sem senha. Primeiro, execute visudo para editar o arquivo sudoers e adicione esta linha:

nate  ALL=NOPASSWD:/sbin/shutdown

Isso permitirá que o usuário nate execute sudo /sbin/shutdown sem que uma senha seja solicitada.

    
por 20.03.2015 / 17:50