diff options
author | Yves Müller <uves@spline.inf.fu-berlin.de> | 2010-09-15 18:48:31 +0000 |
---|---|---|
committer | Yves Müller <uves@spline.inf.fu-berlin.de> | 2010-09-15 18:48:31 +0000 |
commit | 6777ef358eae982ff2074a68d39f41a9ed4e0c3e (patch) | |
tree | ab64c3d243e24da7bfb38e21b03c776e315099a6 /goodnight.sh | |
download | goodnight-6777ef358eae982ff2074a68d39f41a9ed4e0c3e.tar.gz goodnight-6777ef358eae982ff2074a68d39f41a9ed4e0c3e.tar.bz2 goodnight-6777ef358eae982ff2074a68d39f41a9ed4e0c3e.zip |
added goodnight script
git-svn-id: https://dev.spline.de/svn/spline-scripts@3 1aad8fdd-bd54-4baf-a42c-ee7a3800c0a1
Diffstat (limited to 'goodnight.sh')
-rw-r--r-- | goodnight.sh | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/goodnight.sh b/goodnight.sh new file mode 100644 index 0000000..9272154 --- /dev/null +++ b/goodnight.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +# I had problems with dash so i changed to real bash + + +# Dieses Skript versucht so lange den Rechner herunter zu fahren, bis who keine +# User mehr anzeigt, und keine screen Sessions mehr gefunden werden. +# Wenn die Zeit erreicht ist, zu der der Rechner laufen sollte, +# beendet sich das Skript ohne den Rechner herunterzufahren. + +# Zeitpunkt ab dem der Rechner an sein sollte: +SHIFTSTART='08' +# Zeitpunkt ab dem der Rechner heruntergefahren werden sollte: +SHIFTEND='20' +# shutdown Befehl +SHUTDOWN='/sbin/shutdown -h now' +# soll goodnight sagen was es tut? +DEBUG="YES" + +# returns 0 (==true) if the shift has started +function shifthasstarted () +{ + HOUR=$(date "+%k") + if [ ${HOUR} -lt ${SHIFTEND} -a ${HOUR} -ge ${SHIFTSTART} ]; then + return 0 + else + return 1 + fi +} + +# returns 0 if someone is logged in +function someoneisloggedin () +{ + if [ $(who | wc -l) -gt 0 -o -n "$(pgrep ^screen$)" ]; then + return 0 + else + return 1 + fi +} + +# only echos parameter if DEBUG is set to "YES" +function debug () +{ + if [ $DEBUG = "YES" ]; then + echo $@ + fi +} + +# Warten, bis alle Benutzer ausgeloggt +debug -n "waiting for all sessions to end" +while someoneisloggedin && ! shifthasstarted ; do + debug -n "." + sleep 300 +done +debug "" + +# Wenn es ausserhalb der Arbeitszeit ist herunterfahren. +debug "It is now $(date "+%H:%M")" +debug "Shift starts at ${SHIFTSTART} and ends at ${SHIFTEND}" +debug -n "Therefore I am " +if shifthasstarted ; then + debug "Cancelling shutdown because it's my shift" +else + debug "Shutting down after an uptime of $(uptime | awk '{print $1}')" + ${SHUTDOWN} +fi +exit 0 |