Dieser Artikel basiert im Wesentlichen auf dem Skript Auto Off von Ubuntuusers und wurde angepasst um unseren Anforderungen zu entsprechen.
Es handelt sich um ein Skript welches in regelmässigen Abständen überprüft ob einer der Clients angeschaltet ist. Ist dies nicht der Fall wird der Server in Standby geschickt.
Anzeige:
Cron Job erstellen
Als Erstes wird unter /etc/cron.d eine neue Datei mit dem Namen checkshutdown erstellt.
Dazu in die Konsole folgendes eingeben:
sudo nano /etc/cron.d/checkshutdown
In den sich nun öffnenden Texteditor den folgenden Code eintragen und anschliessend speichern
# Auto shutdown
*/10 * * * * root /usr/local/sbin/checkshutdown.sh
Skript
Der soeben erstellte Cronjob ruft nun alle 10 Minuten ein Skript auf welches überprüft ob einer der Clients ansprechbar ist. Ist dies zweimal hintereinander nicht der Fall geht der Server in den Standby (also nach 20 Minuten)
Wir geben folgendes in die Konsole ein:
sudo gedit /usr/local/sbin/checkshutdown.sh
In den Texteditor kommt folgender Code:
#!/bin/bash
#
#set -x
. /etc/autoshutdown.conf
logit()
{
logger -p local0.notice -s -- AutoShutdown: $*
}
IsOnline()
{
for i in $*; do
ping $i -c1
if [ "$?" == "0" ]; then
logit PC $i is still active, auto shutdown terminated
return 1
fi
done
return 0
}
IsRunning()
{
for i in $*; do
if [ `pgrep -c $i` -gt 0 ] ; then
logit $i still active, auto shutdown terminated
return 1
fi
done
return 0
}
IsDamonActive()
{
for i in $*; do
if [ `pgrep -c $i` -gt 1 ] ; then
logit $i still active, auto shutdown terminated
return 1
fi
done
return 0
}
IsBusy()
{
# Samba
if [ "x$SAMBANETWORK" != "x" ]; then
if [ `/usr/bin/smbstatus -b | grep $SAMBANETWORK | wc -l ` != "0" ]; then
logit samba connected, auto shutdown terminated
return 1
fi
fi
#damons that always have one process running
IsDamonActive $DAMONS
if [ "$?" == "1" ]; then
return 1
fi
#backuppc, wget, wsus, ....
IsRunning $APPLICATIONS
if [ "$?" == "1" ]; then
return 1
fi
IsOnline $CLIENTS
if [ "$?" == "1" ]; then
return 1
fi
return 0
}
COUNTFILE="/var/spool/shutdown_counter"
OFFFILE="/var/spool/shutdown_off"
# turns off the auto shutdown
if [ -e $OFFFILE ]; then
logit auto shutdown is turned off by existents of $OFFFILE
exit 0
fi
if [ "$AUTO_SHUTDOWN" = "true" ] || [ "$AUTO_SHUTDOWN" = "yes" ] ; then
IsBusy
if [ "$?" == "0" ]; then
# was it not busy already last time? Then shutdown.
if [ -e $COUNTFILE ]; then
# shutdown
rm -f $COUNTFILE
logit auto shutdown caused by cron
/usr/sbin/pm-suspend
exit 0
else
# shut down next time
touch $COUNTFILE
logit marked for shutdown in next try
exit 0
fi
else
rm -f $COUNTFILE
#logit aborted
exit 0
fi
fi
logit malfunction
exit 1
Das Ganze nun abspeichern. Anschliessend das Ganze noch ausführbar machen mit:
sudo chmod a+x /usr/local/sbin/checkshutdown.sh
Die Konfigurationsdatei
Wir erstellen nun noch die Konfigurationsdatei mit:
sudo nano /etc/autoshutdown.conf
In diese Datei kommt folgender Code:
# Turn on auto shutdown
AUTO_SHUTDOWN=yes
# Damons that always have one process running, only if more that one process is active we prevent the shutdown
# The values are used with grep, so just a unique portion is sufficient
DAMONS=""
# Important applications that shall prevent the shutdown
# The values are used with grep, so just a unique portion is sufficient
APPLICATIONS=""
# Network IP range for checking any open samba connections
# The value is used with grep, so just a unique portion is sufficient
SAMBANETWORK=""
# Names or IP for computers that shall prevent the shutdown
# We ping these computers in the list to check whether they are active.
CLIENTS="sonne mond stern 192.168.1.10 192.168.1.11 192.168.1.12"
Wichtig ist der Punkt Clients hier müssen die Namen oder IP Adressen der Clients eingegeben werden die überprüft werden sollen. Sinnvollerweise sollte man allen seinen Clientcomputern eine feste IP Adresse zuweisen, damit der Check auch zuverlässig funktioniert.
Die Überprüfung erfolgt durch einen Ping, welcher allerdings von Windows 7 standardmässig blockiert wird. In diesem Fall muss die die Windowsfirewall entsprechend umkonfiguriert werden
Dazu bitte in das Suchfeld im Startmenü
Windows-Firewall mit erweiterter Sicherheit
eingeben, dann unter Eingehende Regeln bei dem Punkt Datei- und Druckerfreigabe (Echoanforderung – ICMPv4 eingehend) bei Aktiviert ein Häckchen setzten. Aktion muss auf zulassen gesetzt sein.
Nun geht der Homeserver 20 Minuten nachdem der letzte Client ausgeschaltet wurde in den Standby.
Anzeige: