From 6777ef358eae982ff2074a68d39f41a9ed4e0c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yves=20M=C3=BCller?= Date: Wed, 15 Sep 2010 18:48:31 +0000 Subject: added goodnight script git-svn-id: https://dev.spline.de/svn/spline-scripts@3 1aad8fdd-bd54-4baf-a42c-ee7a3800c0a1 --- goodnight.sh | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 goodnight.sh 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 -- cgit v1.2.3-1-g7c22