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ãosudosem senha para o usuário executar este script (não o comandoshutdown):foo spamegg = (root) NOPASSWD: /path/to/script.shAqui
fooé o nome de usuário,spameggé o nome do host, substitua/path/to/script.shde acordo. Agora execute o comando como (torne o script executável):sudo /path/to/script.shObserve que o comando
gnome-screensaver-command -atambém será executado comoroot, se você não quiser que você precise conceder permissão para o comandosudo shutdownsem 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 -aserá executado somente após a conclusão do comandoshutdown. Como o comandoshutdownserá realmente executado após 30 minutos, portanto, ele está em um estado de bloqueio. Para resolver isso, você pode colocar o comandoshutdownem 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.