Mit Zenity kann man viele komplizierte Kommandozeilen-Eingaben schön verpacken und somit sogar versteckte Linux-Funkionen dem normalen Benutzer zugängig machen. Eine solche Funktion ist das zeitgesteuerte Herunterfahren. Dies kann man nutzen, wenn man vor dem Einschlafen noch Musik vom Rechner hören möchte oder ein Download noch nicht abgeschlossen ist.
sudo shutdown -h +30
Dabei wird der Befehl Herunterfahren (shutdown) mit dem Super-User-Rechten (sudo) aufgerufen. Die Parameter -h (Ausschalten) und +30 (in 30 Minuten) geben zusätzliche Informationen. Nach der Eingabe wird der Nutzer nach dem Passwort gefragt, weil sudo dies verlangt. Eine sehr aufwendige Methode, die man sich merken muss.
Zenity machts graphisch
Mit der Zenity-Bibliothek kann man diese Aufgabe nun graphisch lösen. Dafür legt man folgendes Skript unter den Namen ausschalten.sh an.
#!/bin/bash if ! MINUTES=$(zenity --entry --text "Wie viele Minuten soll er noch an sein?" --title "Minuten?") then exit; fi if ! [[ "$MINUTES" =~ ^[0-9]+$ ]] then zenity --error --text "$MINUTES ist keine Zahl." exit 1 fi sudo shutdown -h +$MINUTES & PID=$! if zenity --warning --text "Der Computer fährt sich in $MINUTES Minuten herunter.\n\n Wollen Sie das Abbrechen?" then kill $PID fi
Dieses macht man mit dem Befehl chmod +x ausschalten.sh ausführbar. Es fehlt nur noch ein Eintrag in der Datei, die den Zugriff auf die Super-User-Funktionen regelt. Dafür ruft man im Terminal den Befehl sudo visudo auf. Am Ende der angezeigten Datei fügt man folgende Zeile ein, wobei der eigene Benutzername einzusetzen ist:
Benutzername ALL=(ALL) NOPASSWD: /sbin/shutdown, PASSWD:ALL
Führt man das oben angelegte Skript nun aus, wird man zuerst nach der Anzahl der Minuten gefragt. Dann wird der Shutdown-Befehl ausgeführt und ein Fenster mit den Hinweis darauf angezeigt. Wird dieses Fenster geschlossen, wird auch der Herunterfahren-Prozess beendet.
Also ich finde „sudo shutdown -h +30“ toll. Geht doch fix. Und ich fühle mich ULTRA, weil ich was in der Konsole als Superuser eingegeben habe. ;)