From 9ce996b12e44b30f1817b995b3be276f8a05b60f Mon Sep 17 00:00:00 2001 From: Marian Sigler Date: Thu, 28 Feb 2013 16:22:01 +0100 Subject: add version from knister and chop (mtime july 2012) --- goodnight.sh | 51 ++++++++++++++++++++++++--------------------------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/goodnight.sh b/goodnight.sh index 9272154..6439126 100644 --- a/goodnight.sh +++ b/goodnight.sh @@ -1,7 +1,4 @@ -#!/bin/bash - -# I had problems with dash so i changed to real bash - +#!/bin/sh # Dieses Skript versucht so lange den Rechner herunter zu fahren, bis who keine # User mehr anzeigt, und keine screen Sessions mehr gefunden werden. @@ -9,7 +6,7 @@ # beendet sich das Skript ohne den Rechner herunterzufahren. # Zeitpunkt ab dem der Rechner an sein sollte: -SHIFTSTART='08' +SHIFTSTART='10' # Zeitpunkt ab dem der Rechner heruntergefahren werden sollte: SHIFTEND='20' # shutdown Befehl @@ -17,40 +14,39 @@ SHUTDOWN='/sbin/shutdown -h now' # soll goodnight sagen was es tut? DEBUG="YES" +# shift is considered started when the machine should run # 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 + 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 () +# returns 0 if somebody is logged in +function somebodyisloggedin () { - if [ $(who | wc -l) -gt 0 -o -n "$(pgrep ^screen$)" ]; then - return 0 - else - return 1 - fi + r1=$(w -h | wc -l) # local users + r2=$(ps ax | grep -e tmux -e SCREEN -e 'sshd:' | grep -v grep | wc -l) # remote users + return $(( ! (r1 + r2) )) } # only echos parameter if DEBUG is set to "YES" function debug () { - if [ $DEBUG = "YES" ]; then - echo $@ - fi + 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 +while somebodyisloggedin && ! shifthasstarted ; do + debug -n "." + sleep 300 done debug "" @@ -59,9 +55,10 @@ 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" + debug "Cancelling shutdown because it's my shift" else - debug "Shutting down after an uptime of $(uptime | awk '{print $1}')" - ${SHUTDOWN} + debug "Shutting down after an uptime of $(uptime | awk '{print $1}')" + ${SHUTDOWN} fi exit 0 + -- cgit v1.2.3-1-g7c22