Problem
Ubuntu per Crontab herunterzufahren ist ja kein Problem, etwas schwieriger wird es, wenn man Warnungen auf dem Desktop des angemeldeten Users haben möchte.
Vorarbeiten
Unter
/etc/xdg/autostart
die Datei
postlogin-xhost-root.desktop
anlegen. Diese Datei wird bei jedem Login ausgeführt. Folgenden Inhalt einfügen:
#!/usr/bin/env
xdg-open
[Desktop Entry]
Encoding=UTF-8
Name=Postlogin-xhost-root
Comment=Zugriffsrecht für root auf Display
Exec=/usr/bin/xhost +local:root
Terminal=false
Type=Application
OnlyShowIn=GNOME;XFCE;KDE;Unity;
NoDisplay=true
Jetzt darf der User root auf das Display des Users zugreifen.
Nun die Datei
/etc/crontab
bearbeiten und folgende Zeile ganz unten einfügen:
00 18 * * * root env DISPLAY=:0 /usr/bin/herunterfahren
Damit wird das weiter unten beschriebene Skript um 18:00 Uhr ausgeführt. Die Datei
/usr/bin/herunterfahren
anlegen und sie ausführbar machen:
sudo chmod +x herunterfahren
Es gibt nun 2 Wege, Weg A blendet für 6 Sekunden (Timeout entgegen der man-Pages leider nicht einstellbar) Warnmeldungen ein, Weg B lässt dem User die Möglichkeit, das Herunterfahren abzubrechen.
Weg A:
In die Datei /usr/bin/herunterfahren folgendes einfügen:
#!/bin/bash
notify-send -u critical -i /usr/share/icons/Humanity/status/48/dialog-warning.svg "ACHTUNG!" "Der Rechner schaltet sich in 2 min aus! Speichern Sie Ihre Daten jetzt!" &
sleep 60
notify-send -u critical -i /usr/share/icons/Humanity/status/48/dialog-warning.svg "ACHTUNG!" "Der Rechner schaltet sich in 1 min aus! Speichern Sie Ihre Daten jetzt!" &
sleep 60
notify-send -u critical -i /usr/share/icons/Humanity/status/48/dialog-warning.svg "ACHTUNG!" "Der Rechner schaltet sich JETZT aus!" &
sleep 15
shutdown -h now
exit 0
Weg B:
In die Datei /usr/bin/herunterfahren folgendes einfügen:
#!/bin/bash
USERCOUNT=$(who | wc -l)
if [ $USERCOUNT = "0" ]; then
shutdown -h now; else
zenity --question --timeout=30 --text="Der Rechner wird in 30 Sekunden abgeschaltet. Ist das OK?" --title="PC-Abschaltung"; STATUS=$?
if [ $STATUS = "1" ]; then
echo "";
else
zenity --info --timeout=120 --text "Der Rechner wird in 2 Minuten oder mit einem Klick auf OK heruntergefahren. Bitte speichern Sie JETZT Ihre Arbeit!"; shutdown -h now
fi
fi
Quellen (überarbeitet und Fehler behoben!):
- http://permalink.gmane.org/gmane.linux.distributions.musterloesung/41080
- http://www.linuxmuster.net/clients:linux_clients:ubuntu-herunterfahren