Ping-Status mit Zipato (Onlinestatus)
5 (2)

Status der Netzwerkteilnehmer
Status der Netzwerkteilnehmer

Die Zipabox (by Zipato) ist weiterhin die Hausautomationszentrale in unserem Haus. Nun wollte ich zwecks Wake On LAN eine Info haben, ob der Rechner bereits ein- oder eben ausgeschaltet ist. Von Haus aus kann die Zipabox das noch nicht (simples Ping ist nicht möglich). Es kursieren diverse Lösungen im Internet, z.B. eine Docker-Lösung mit Webfrontend oder eine Lösung mit nmap und der Fritz!Box. Die Docker-Lösung habe ich getestet, diese beinhaltet sogar Wake On LAN. Allerdings habe ich meine eigene Lösung in Betrieb genommen, da ich immer gerne Herr meiner Scripte bin. Ich arbeite mit simplen Ping-Anfragen, das beutet auch, dass wechselnde IP’s problematisch werden können, bzw. es wird ein gepflegtes DNS vorausgesetzt.

Voraussetzung für meine Lösung ist ein laufendes Linux-System (z.B. eine NAS oder Raspberry), fest vergebene IP’s bzw. funktionierendes DNS im Heimnetz und auf dem Linux System sollten die Pakete bash, iputils-ping und curl installiert sein. Ich lasse das Script in einem Docker-Container laufen (auf Ubuntu-Basis), da ich mein NAS in der Richtung nicht anpassen will.

Wer keine Linux-Kenntnisse hat, der sollte sich überlegen hier auszusteigen, ich setze einfach ein paar Dinge voraus.

Der Virtuelle Sensor im Gerätemanager
Der Virtuelle Sensor im Gerätemanager

Zuerst müssen wir virtuelle Sensoren der zu überwachenden Netzwerkteilnehmer erstellen. Von diesen virtuellen Sensoren benötigt ihr jetzt den apiKey und ep-Eintrag. Diese findet ihr im Gerätemanager unter den Einstellungen des State-Eintrag des passenden virtuellen Sensors. In den Einstellungen sind in der URL die notwendigen Werte angegeben.

Erstellt Euch eine Datei, die wie folgt aufgebaut ist (Raute # kommentiert die Zeile aus):

#IP/FQDN:apiKey:ep
192.168.0.20:abcd1234-12ab-12ab-12ab-123456abcdef:1234abcd-12ab-12ab-12ab-123456abcdef
host.domain.edu:abcd1234-12ab-12ab-12ab-123456abcdef:1234abcd-12ab-12ab-12ab-123456abcdef

Letzten endlich arbeitet das Script jede Zeile ab, die nicht mit # auskommentiert ist. Ich habe ein gepflegtes DNS und komme damit gut zurecht.

Hier das Script, in dem ihr nur noch die Seriennummer eurer Zipabox/-tile, die Pfade für WD (WorkingDirectory) und CONFFILE angeben müsst:

#!/bin/bash

WD=/dockerhost/ping
CONFFILE=${WD}/.conf # Configfile: hier sollten IP/FQDN, der apiKey und ep gepflegt sein
PINGCOUNT=3 # Wie viele Pings sollen gesendet werden
ZIPATO_SERIAL="01234567ABCDEFGH" # Hier muss die Seriennummer der Zipabox/-tile rein
IFS=":"

# FQDN/IP:apiKey:ep
while read host Zipato_apiKey Zipato_ep
do
        if [ ${host:0:1} != "#" ]
        then
                echo "Hostname : ${host}"
                echo "apiKey   : ${Zipato_apiKey}"
                echo "ep       : ${Zipato_ep}"
                setURL="https://my.zipato.com/zipato-web/remoting/attribute/set?serial=${ZIPATO_SERIAL}&apiKey=${Zipato_apiKey}&ep=${Zipato_ep}&state="
                PINGRESULT=`ping -v -c $PINGCOUNT ${host} | grep '100% packet loss'`
                if [ -z "${PINGRESULT}" ]
		then
			curl "${setURL}true" > /dev/null
			echo "${host} is online"
		else
			curl "${setURL}false" > /dev/null
			echo "${host} is offline"
		fi;
	fi;
done < ${CONFFILE}

Ich lasse dieses Script minütlich per Cron-Job aufrufen.

Bewerte diesen Beitrag
[Total: 2 Durchschnitt: 5]
Abonnieren
Benachrichtige mich bei
Deine Daten werden nicht an Dritte weitergegeben und auf deutschen Servern verarbeitet. Hiermit stimmst Du zu, dass Deine IP-Adresse für maximal 48h gespeichert wird. Außerdem stimmst Du der Speicherung und Veroffentlichung Deines Namens, Deiner Mailadresse, falls vorhanden Deiner Webseite und Deines Kommentares zu.
0 Kommentare
Inline Feedbacks
Zeige alle Kommentare
Nach oben scrollen