summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarian Sigler <m@qjym.de>2013-02-28 16:22:01 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2013-02-28 16:40:33 +0100
commit9ce996b12e44b30f1817b995b3be276f8a05b60f (patch)
treec16d221cc32f535aea77cbe6071a579b06b11f43
parent27e186a612198f048c1ad7f6b13295293ec5a970 (diff)
downloadgoodnight-9ce996b12e44b30f1817b995b3be276f8a05b60f.tar.gz
goodnight-9ce996b12e44b30f1817b995b3be276f8a05b60f.tar.bz2
goodnight-9ce996b12e44b30f1817b995b3be276f8a05b60f.zip
add version from knister and chop (mtime july 2012)
-rw-r--r--goodnight.sh51
1 files 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
+