Vorschlag zur Änderung des Auto-Shutdown-Verhaltens

Hi.
Der 16.04er Ubuntu-Client hat bekanntlich ein Script eingebaut, das den Client automatisch abends herunterfährt. Das läuft ja so, dass einmal angefragt wird, ob man weiter arbeiten will oder nicht.

Anschließend hat man 120s Zeit, um alles zu sichern. Wenn man die erste Anfrage aus irgendwelchen Gründen verpasst hat, gibt es keinen Weg mehr zurück. Man kann den Vorgang nicht mehr abbrechen … ich möchte das gerne ändern! Wo liegt das entsprechende Script? ich hätte es lieber so, dass ich auch später noch aus der Abfrage heraus kann und den Auto-Shutdown abbrechen kann.

Hallo,

da hatte ich was:

Am 19.11.2016 16:30 schrieb “Jürgen Horzella”

Hallo,

ich habe das Skript

https://github.com/linuxmuster/linuxmuster-client-extras/blob/master/
shutdown/check-shutdown

etwas modifiziert, so dass die Benutzerabfrage nur kommt, wenn der Rechner
einige Zeit nicht benutzt wurde. Momentan nur zu Hause auf meinem Rechner
getestet. Will ich nächste Woche (wenn Zeit ist) in der Schule
ausprobieren. Spricht da was grundsätzliches dagegen? Man muss noch
xprintidle nachinstallieren.

Viele Grüße
Jürgen

#!/bin/bash

export LANG="de_DE.utf8"
export PATH="/usr/bin:/sbin:/bin"

TARGET_USER="$(who | grep 'tty' | tail --lines 1 | cut --fields 1
--delimiter ' ')"
run_in_user_context="sudo -u ${TARGET_USER}"

## Prüfen, ob ein Benutzer angemeldet ist; wenn nein shutdown, wenn ja...
USERCOUNT=$(who | wc -l)
if [ $USERCOUNT -eq 0 ]; then
    shutdown -h now
else
   * ## Überprüfen, ob Rechner seit zwei Stunden (7200000ms) unbenutzt*
*    export DISPLAY=:0*
*    sudo -u $user xhost +si:localuser:root*
*    if [ $(xprintidle) -gt 7200000 ]; then*
         ## Frage an den Benutzer ob das Herunterfahren abgebrochen werden
soll.
         $run_in_user_context zenity --question --timeout=120 --text="Der
PC wird in 2 Minuten abgeschaltet. Ist das OK?" --title="PC-Abschaltung"
--ok-label="OK, bitte abschalten" --cancel-label="Nein, ich möchte noch
Arbeiten!"
         STATUS=$?
         if [ $STATUS -eq 1 ]; then ## Nicht herunterfahren
             exit 0
         else
             for seconds_until_shutdown in $(seq 120 -30 30); do
                 $run_in_user_context zenity --warning --timeout=30
--text="Der Rechner wird in $seconds_until_shutdown Sekunden
heruntergefahren. Bitte abspeichern." &
                 sleep 30
             done
             $run_in_user_context zenity --warning --timeout=5 --text="Der
Rechner wird heruntergefahren. Auf Wiedersehen." &
             sleep 5
             shutdown -h now
         fi
    fi
fi

exit 0

Leider ist bei der Formatierung und dem Link zu github etwas schief gegangen. Kannst du den Code in die Umgebung
[ code ] bla bl bla [ /code ] packen? Dann wird alles richtig dargestellt.

Hallo Michael,

horzella:

check-shutdown

Leider ist bei der Formatierung und dem Link zu github etwas schief
gegangen. Kannst du den Code in die Umgebung
[ code ] bla bl bla [ /code ] packen? Dann wird alles richtig dargestellt.

Hier ist der Link:

Dort drückst du auf RAW 8oben rechts) wenn du den code per Copy n paste
raus haben willst.

LG

Holger

… und ich hätte da noch eine Lösung, bei der ein Countdown (3 Sekunden Intervalle) angezeigt wird:

#!/bin/bash
# Script created by S.Senft
# License: Free Software (License GPLv3)
# Thanks to Rainer Rössler

# Zeit bis zum Herunterfahren in Sekunden
count=900

# Zeitpuffer am Ende des Countdowns in Sekunden
grace=`expr $count + 5`
#Shutdown, wenn kein Benutzer angemeldet ist
usercount=$(who | wc -l)
if [ $usercount -le 0 ]; then
  /sbin/shutdown -h now
else
#Meldung und Countdown
  until [ "$count" -le "0" ]; do
    ((count-=3))
    notify-send -t 2700 "Zeit bis zum Herunterfahren: $count s"
    echo $count
    sleep 3
  done |  LANG=de_DE.utf8 /usr/bin/zenity --question --timeout=$grace --text="\n Der Computer wird in Kürze automatisch heruntergefahren." --title="" --ok-label="Sofort Herunterfahren" --cancel-label="Herunterfahren verhindern"; status=$?
  if [ $status -eq 1 ]; then 
    LANG=de_DE.utf8 /usr/bin/zenity --warning --timeout=15 --text="\n Das Herunterfahren wurde verhindert." --title="" &
    exit 0
  fi
 /sbin/shutdown -h now
fi

exit 0

Gruß
Stefan

Ich greife das Thema mal auf mit folgendem Anliegen:
Bei uns sind des öfteren Abends Veranstaltungen in bestimmten Räumen (z.B. Elternabende).
Aufgrund des Shutdown-Scripts, das ja grundsätzlich super funktioniert, fahren die Rechner bei Unachtsamkeit während einer solchen Veranstaltung herunter.
Gibt es eine einfache Möglichkeit im Voraus für einen bestimmten Raum bspw. für einen Tag das Script zu deaktivieren?

Hallo,

Ich greife das Thema mal auf mit folgendem Anliegen:
Bei uns sind des öfteren Abends Veranstaltungen in bestimmten Räumen (z.B. Elternabende).
Aufgrund des Shutdown-Scripts, das ja grundsätzlich super funktioniert, fahren die Rechner bei Unachtsamkeit während einer solchen Veranstaltung herunter.
Gibt es eine einfache Möglichkeit im Voraus für einen bestimmten Raum bspw. für einen Tag das Script zu deaktivieren?

am einfachsten geht das, dann du vor dem sync an dem Tag, eine angepaßte
linuxmuster.cron (oder wie sie heißt) über den postsync auf den Cleint
bewegst.
Am Tag danach einfach die Datei wieder wegnehmen.

LG

Holger

Hallo!
Hat das jemand schon beim neuen Linuxmusterclient am Laufen?
Ich würde das jetzt mal mit dem script von stefan probieren, aber was muss in die crontab?
LG
Max