summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYves Müller <uves@spline.inf.fu-berlin.de>2010-09-15 18:48:31 +0000
committerYves Müller <uves@spline.inf.fu-berlin.de>2010-09-15 18:48:31 +0000
commit6777ef358eae982ff2074a68d39f41a9ed4e0c3e (patch)
treeab64c3d243e24da7bfb38e21b03c776e315099a6
downloadgoodnight-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
-rw-r--r--goodnight.sh67
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