Desativar / suspender após a conclusão do script

1

Eu tenho um pequeno roteiro. Ele foi arrancado de um tutorial do Youtube, não testado, feio e não muito bom. Não é feito e não é destinado ao uso público. Aqui está:

#!/bin/bash

sudo apt-get -y install git g++ gcc-multilib g++-multilib libc6-dev-i386 lib32z1-dev lib32bz2-dev xserver-xorg-dev:i386 libfreetype6-dev:i386 libmirclient-dev:i386 libosmesa6:i386 libosmesa-dev libjpeg-turbo8-dev:i386 libgl1-mesa-dev:i386 libglu1-mesa-dev:i386 libxcursor-dev:i386 libxi-dev:i386 libxrandr-dev:i386 libxinerama-dev:i386 libxcomposite-dev:i386 libdbus-1-dev:i386 libgnutls-dev:i386 libncurses5-dev:i386 libsane-dev:i386 libv4l-dev:i386 libgphoto2-6-dev:i386 liblcms2-dev:i386 liblcms1-dev:i386 gstreamer0.10-plugins-base:i386 libcapi20-dev:i386 libcups2-dev:i386 libfontconfig1-dev:i386 libgsm1-dev:i386 libtiff5-dev:i386 libmpg123-dev:i386 libopenal-dev:i386 libxrender-dev:i386 libxml2-dev:i386 libxslt1-dev:i386 libpng12-dev:i386 libssl-dev:i386 libldap2-dev:i386 unixodbc-dev:i386

sudo apt-get -y build-dep wine1.7

cd /usr/lib/i386-linux-gnu
sudo ln -s libfreetype.so.6 libfreetype.so
sudo ln -s libOSMesa.so.6 libOSMesa.so

git clone git://source.winehq.org/git/wine.git ~/wine-git
cd ~/wine-git

cat "/home/krabica/Dokumenty/TextFiles/0099-EndlessSpace-WGL-ShareList-Hack.patch" | patch -p1

./configure
make

Eu te avisei.

Como você pode ver, este script chama vários comandos, alguns como root e alguns como o usuário normal, neste caso "krabica" ("box" (como em "cardboard box") em inglês).

O problema é que leva mais de 2 horas para compilar o Wine no meu laptop, então quero deixá-lo funcionando enquanto durmo, mas eu quero que meu laptop desligue / durma ou qualquer coisa (digite um estado onde o computador e o ventilador não funciona, para economizar energia e me deixar dormir em silêncio).

O problema é que shutdown deve ser chamado como sudo ou não funcionará. Mas, no momento em que o script termina, a senha não está mais no cache e você precisa digitá-la novamente (não é muito conveniente quando você está dormindo).

Eu tentei executar path/to/script && sudo shutdown , mas isso também não funcionou. Ele quer uma senha 15 minutos desde a última vez que você digitou.

Existe alguma maneira fácil de conseguir isso? Por fácil quero dizer não alterar as configurações do sistema, etc.

Obrigado.

    
por Juraj Fiala 29.06.2014 / 12:46

1 resposta

3

Embrulhe em um subnível:

sudo sh -c "/path/to/script; shutdown -h now"

O problema lá é o script será executado como root também. Isso pode não ser um problema (considere isso no seu caso), mas você pode contornar isso usando sudo novamente para voltar ao seu $USER (que será substituído porque estamos usando aspas duplas):

sudo sh -c "sudo -u $USER /path/to/script; shutdown"

É um pouco hacky, mas deve funcionar.

    
por Oli 29.06.2014 / 13:11