Homeserver im Idle ausschalten, wenn PC ebenfalls ausgeschaltet ist

Da die Strompreise bekanntlich immer weiter steigen und mein HP Microserver (trotz seines relativ geringen Verbrauchs) auch ein paar Watt schluckt, habe ich mir ein kleines Script gebaut, das ihn automatisch ausschaltet, wenn mein Laptop seit 15 Minuten aus ist und die Load Average der letzten 5 Minuten unter 0.3 war.

Die Funktionsweise ist schnell erklärt. Das Script wird jede Minute über Crond aufgerufen und überprüft, ob der in PING_IP definierte Host noch erreichbar ist. Ist er dies nicht, wird der Wert in /tmp/auto_shutdown um 1 inkrementiert. Ist der Wert höher als in der Variable MAX_TRIES angegeben und die durchschnittliche Systemauslastung der letzten 5 Minuten ist niedriger als in MAX_LOAD definiert, wird der Shutdown über systemd initiiert.

Das Script selbst habe ich in /root/auto_shutdown.sh untergebracht, aufsgeführt wird es im Minutentakt von Crond.

#!/bin/sh
PING_IP="192.168.1.100"
MIN_TRIES=15
MAX_LOAD=0.3
DOWN_SINCE=$(cat /tmp/auto_shutdown 2>/dev/null)
<!--more-->
ping -q -c1 ${PING_IP} &>/dev/null
if [ "$?" -eq 0 ];
then
    echo 0 > /tmp/auto_shutdown
    exit
fi
echo $(expr ${DOWN_SINCE} + 1 ) > /tmp/auto_shutdown

if [[ ${DOWN_SINCE} -ge ${MIN_TRIES} ]] && [[ $(cut -f2 -d\  /proc/loadavg) < ${MAX_LOAD} ]]
then
    systemctl poweroff
fi