Server automatisiert herunterfahren

Jan 06.12.2018, 23:18

Wenn der Server im Keller steht und man vergisst, diesen per Fernwartung abzuschalten, ist ein Fußweg angesagt. Oder der Server kann sich eben selbst abschalten.

Folgendes Script wird alle 5 Minuten ausgeführt und schaut nach, ob noch offene Netzwerkverbindungen existieren. Falls nicht, wird ein Marker gesetzt. Wenn bei der nächsten Ausführung wieder keine Netzwerkverbindungen existieren, wird der Server runtergefahren.

dankert@storage:~$ cat /etc/cron.5min/shutdown-on-unused
#!/bin/bash
COUNT_CONN=`netstat -n --tcp|grep ^tcp|wc -l`
MARKER=/var/tmp/no_connections
if [ $COUNT_CONN -eq 0 ]; then
if [ -f $MARKER ]; then
rm $MARKER
shutdown -h +2 "Shutting down in 2 minutes because of no network connections."
else
touch $MARKER
fi
else
# Connections in use
if [ -f $MARKER ]; then
shutdown -c
rm $MARKER
fi
fi

In die Datei /etc/crontab habe ich folgende Zeile ergänzt, damit die Skripte im Verzeichnis /etc/cron.5min= alle 5 Minuten ausgeführt werden.

*/5 *	* * *	root    cd / && run-parts --report /etc/cron.5min