Solução para o problema 1 e 2:
-
Você precisa editar o arquivo
/etc/sudoers
(sudo visudo
) para adicionar a entrada relevante para conceder a permissãosudo
sem senha para o usuário executar este script (não o comandoshutdown
):foo spamegg = (root) NOPASSWD: /path/to/script.sh
Aqui
foo
é o nome de usuário,spamegg
é o nome do host, substitua/path/to/script.sh
de acordo. Agora execute o comando como (torne o script executável):sudo /path/to/script.sh
Observe que o comando
gnome-screensaver-command -a
também será executado comoroot
, se você não quiser que você precise conceder permissão para o comandosudo shutdown
sem senha para o usuário:foo spamegg = (root) NOPASSWD: /sbin/shutdown
-
O segundo problema se deve ao fato de que, no seu script atual, o
gnome-screensaver-command -a
será executado somente após a conclusão do comandoshutdown
. Como o comandoshutdown
será realmente executado após 30 minutos, portanto, ele está em um estado de bloqueio. Para resolver isso, você pode colocar o comandoshutdown
em segundo plano:shutdown -h +30 & gnome-screensaver-command -a
Em poucas palavras, você pode criar o script da seguinte forma:
#!/bin/bash
shutdown -h +30 &
gnome-screensaver-command -a
Execute como:
sudo /path/to/script.sh
Antes de usar sudo
, armazene o script em um local seguro, ele deve estar acessível apenas a você e você deve ter certeza do conteúdo do script.