NEWS
[gelöst] Meldung, wenn DYNDNS-Auflösung unterschiedlich
-
Hallo zusammen!
Ich suche nach einer Lösung für folgendes Problem:
Hin und wieder kommt es vor, dass es einen Fehler mit STUN-Servern meiner 3CX-Telefonanlage gibt. Das Resultat: es kommen keine Anrufe mehr rein, weil der Domainnamen nach der nächtlichen Trennung der DSL-Verbindung nicht auf die IP-Adresse aktualisiert wird. Wenn das passiert, möchte ich so schnell wie möglich informiert werden z.B. über Telegram oder per Mail.
So grob sollte es so funktionieren: Da ich zwei Domains habe zu denen die aktuelle IP-Adresse aufgelöst wird, brauche ich nur diese beiden IP-Adressen vergleichen. Und wenn die unterschiedlich sind, gibt's 'ne Meldung.
Der erste DNYDNS-Dienst läuft auf dem Router (Lancom 1783vaw) und ist zu 100% zuverlässig. Der zweite Dienst per STUN-Server läuft auf der 3CX-VM. Der Dienst macht hin und wieder Zicken.
Die Frage ist, ob man irgendwie an Datenpunkte kommt, die auf die IP-Adresse zeigen. Die andere Alternative wäre mit einem Skript direkt die IP-Adressen aus den Domains auslesen und vergleichen.
Zu beiden Möglichkeiten habe ich auf die Schnelle keinen Ansatz gefunden. Fällt euch etwas dazu ein?
Gruß Josh
-
Hallo zusammen!
Ich suche nach einer Lösung für folgendes Problem:
Hin und wieder kommt es vor, dass es einen Fehler mit STUN-Servern meiner 3CX-Telefonanlage gibt. Das Resultat: es kommen keine Anrufe mehr rein, weil der Domainnamen nach der nächtlichen Trennung der DSL-Verbindung nicht auf die IP-Adresse aktualisiert wird. Wenn das passiert, möchte ich so schnell wie möglich informiert werden z.B. über Telegram oder per Mail.
So grob sollte es so funktionieren: Da ich zwei Domains habe zu denen die aktuelle IP-Adresse aufgelöst wird, brauche ich nur diese beiden IP-Adressen vergleichen. Und wenn die unterschiedlich sind, gibt's 'ne Meldung.
Der erste DNYDNS-Dienst läuft auf dem Router (Lancom 1783vaw) und ist zu 100% zuverlässig. Der zweite Dienst per STUN-Server läuft auf der 3CX-VM. Der Dienst macht hin und wieder Zicken.
Die Frage ist, ob man irgendwie an Datenpunkte kommt, die auf die IP-Adresse zeigen. Die andere Alternative wäre mit einem Skript direkt die IP-Adressen aus den Domains auslesen und vergleichen.
Zu beiden Möglichkeiten habe ich auf die Schnelle keinen Ansatz gefunden. Fällt euch etwas dazu ein?
Gruß Josh
@josh
zB. per Linux:#!/bin/bash IP1=$(dig +short ebay.de) IP2=$(dig +short microsoft.com) if [ $IP1 != $IP2 ]; then echo mach was...; fi"echo mach was..." lässt sich natürlich durch alles ersetzen wie bspw. einen Aufruf, der per Simple-API einen Datenpunkt im ioB auf true setzt. Kleines Blockly, JS oder NodeRED-Flow der dann auf den DP bei true reagiert und Telegram, Mail ... auslöst ;)
Das kleine Bash-Script dann per Cron zyklisch laufen lassen.
-
@josh
zB. per Linux:#!/bin/bash IP1=$(dig +short ebay.de) IP2=$(dig +short microsoft.com) if [ $IP1 != $IP2 ]; then echo mach was...; fi"echo mach was..." lässt sich natürlich durch alles ersetzen wie bspw. einen Aufruf, der per Simple-API einen Datenpunkt im ioB auf true setzt. Kleines Blockly, JS oder NodeRED-Flow der dann auf den DP bei true reagiert und Telegram, Mail ... auslöst ;)
Das kleine Bash-Script dann per Cron zyklisch laufen lassen.
@sborg Das sieht sehr vielversprechend aus. Danke dafür :-)
Das Bash-Skript läuft bereits. Ich musste noch das Paket dnsutils nachinstallieren, damit der Befehl dig bekannt ist:
sudo apt install dnsutilsDas Skript sieht jetzt wie folgt aus:
#!/bin/bash IP1=$(dig +short url1.de) IP2=$(dig +short url2.de) if [ $IP1 != $IP2 ] then curl "http://192.168.178.194:8087/set/0_userdata.0.example_state?value=true" &>/dev/null fiHabe erstmal den Testdatenpunkt genutzt.
Blockly läuft auch:

Hier zum Testen auch nur eine Debugausgabe.
Jetzt muss ich nur noch einen Cronjob erzeugen.
Ist die Umsetzung so gut. Oder kann man noch etwas verbessern?
-
@sborg Das sieht sehr vielversprechend aus. Danke dafür :-)
Das Bash-Skript läuft bereits. Ich musste noch das Paket dnsutils nachinstallieren, damit der Befehl dig bekannt ist:
sudo apt install dnsutilsDas Skript sieht jetzt wie folgt aus:
#!/bin/bash IP1=$(dig +short url1.de) IP2=$(dig +short url2.de) if [ $IP1 != $IP2 ] then curl "http://192.168.178.194:8087/set/0_userdata.0.example_state?value=true" &>/dev/null fiHabe erstmal den Testdatenpunkt genutzt.
Blockly läuft auch:

Hier zum Testen auch nur eine Debugausgabe.
Jetzt muss ich nur noch einen Cronjob erzeugen.
Ist die Umsetzung so gut. Oder kann man noch etwas verbessern?
@josh Also ... :)
... die Umsetzung ist "schlecht", denn sie funktioniert so nicht
Ok, mittlerweile geändert ;)
Sieht also soweit gut aus :) -
@josh Also ... :)
... die Umsetzung ist "schlecht", denn sie funktioniert so nicht
Ok, mittlerweile geändert ;)
Sieht also soweit gut aus :)@sborg Ja, ich hatte das Skript noch geändert, weil fehlerhaft

Cronjob ist nun auch erzeugt. Und das Skript habe ich noch um die Erzeugung des Datenpunktes ergänzt. Jetzt kann nichts mehr schief gehen.
Recht herzlichen Dank nochmal für die Unterstützung. Meine Lernkurve geht steil nach oben.

Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden