E-Mail bei geänderter IP

Achtung, Edit Original-Posting!

Im Original-Posting habe ich die Backticks jetzt auch escaped, denn beim Schreiben von /var/tmp/onlinechanged wird sonst einmalig die zum Zeitpunkt des Bootens aktive IP direkt in die Datei geschrieben. Spätere Benachrichtigungen enthalten dann immer diese IP, was ja falsch wäre. Ist mir eben erst aufgefallen, sorry. Die Schreibweise von Danisahne habe ich nicht probiert, sie dürfte aber, da das Dollarzeichen bereits escaped ist, so funktionieren, wie sie dort steht.
 
Zuverlässigkeit von DynDNS

hermann72pb schrieb:
Genau so stabil, wie übrigens dyndns.org. Von daher, mach dir keine sorgen über dyndns.org, es tickt wie eine uhr.

Wie ich bereits schrieb: im Normalfall schon, aber gestern und vorgestern hat mir meine zusätzliche Mail-Benachrichtigung das Leben gerettet (na ja, fast), weil DynDNS wegen DDoS-Attacken nicht verfügbar war, siehe Heise Newsticker.

Genauer gesagt, war ich geschäftlich unterwegs und kurz vor einem wichtigen Termin fiel mir auf, daß ich die Präsentation nicht dabei hatte. Der Versuch, mittels SSH und DynDSN-Name auf meinen Rechner zu kommen, scheiterte. Ich wunderte mich schon, versuchte es mehrmals, aber ohne Erfolg. Also schaute ich in meine E-Mails und las die Adresse heraus. So gelangte ich problemlos ins Heim-Netzwerk und konnte per WoL den Rechner anschalten, um die Präsentation zu holen.

Fazit: Es ist immer gut, einen Plan B zu haben. Vielleicht möchte ja doch jemand mein kleines Skript benutzen. ;-)
 
Hallo,

ich möchte das auch gerne bei mir Aktivieren!

Aber jetzt meine Frage meine Fritzbox hängt nicht am DSL weil meine Leitung zu schlecht ist! Deshalb habe ich ein Speedport W501V an meinem DSL-Anschluß! Kann ich es trotzdem bei der Fritzbox aktivieren ob wohl die Fritzbox nicht am DSL-Anschluß hängt?
 
Da die Ausführung des Skripts an den multid gekoppelt ist und dieser das Event dann ausführt, wenn der Online-Status sich ändert, hängt es davon ab, was der Prozeß darunter versteht. Ich schätze mal, er wird irgendwie den dsld befragen, und der läuft ja nicht bei Dir. Du kannst das ja mal testen, indem Du den Multid mit einem Skript startest, das nicht gleich eine E-Mail schickt sondern eine Log-Zeile irgendwohin schreibt. Falls, wie ich vermute (trotzdem testen, bitte), das Ganze nicht funktioniert mit der Detektion des Online-Status ohne dsld, gibt es ja vielleicht eine Möglichkeit, den Online-Status anders festzustellen, z.B. könnte die Speedport-Box ja evtl. ein Signal schicken, falls Du an die heran kommst. Aber dann könnte man auch gleich den E-Mail-Versand dort einrichten.

Theoretisch kann der E-Mail-Versand von der Fritz!Box aus auch dadurch ausgelöst werden, daß ein Prozeß (z.B. Shell-Skript) alle paar Minuten mit wget die externe IP holt und mit dem vorigen Stand vergleicht. Wenn sie sich geändert hat, wird eine Mail geschickt.
 
Danke erstmal für die Antwort!

Aber jetzt komme ich zu einen anderen Problem das ich natürlich nicht soviel Ahnung habe vom Programieren und deshalb wüste ich nicht mal wie ich der Fritzbox sagen sollte das sie jetzt bei dem Speedport fragt wie die IP ist!

Und für das Speedport habe ich sowas noch nicht gefunden wie man das dort einstellen kann! Oder ob man dort per Telnet reinkommt!

Aber naja ich werde mal etwas weiter lesen und ausprobieren vielleicht finde ich einen weg! Oder vielleicht hat ja einer aus dem Forum das selbe Problem wie ich der mir vielleicht da auch noch weiter helfen kann!

Aber trotzdem noch mal Danke für die Antwort!
 
kriegaex schrieb:
Fazit: Es ist immer gut, einen Plan B zu haben. Vielleicht möchte ja doch jemand mein kleines Skript benutzen. ;-)

Ich war froh, als ich es gefunden hatte.
DynDNS funzt bei mir immer noch nicht. Update manchmal bei DynDNS manuell, damit mein Account nicht verfällt. ;-)
Gott sei Dank haben manche einen Plan B! Danke
 
@Jack_B: Sie soll nicht Speedport fragen, sondern eine externe Seite, die die IP zurück liefert. Schau doch einfach in mein Skript rein, dort steht es drin. Du kannst es einfach modifizieren - könntest, meine ich. Aber da Du sagst, Du bist nicht so fit im Programmieren, ist hier mal ein schnell gehacktes Shell-Skript, das prinzipiell zeigt, wie das gemacht werden kann:

Code:
#! /bin/sh

new_ip="0.0.0.0"
while true; do
  old_ip="$new_ip"
  new_ip="$(wget -q -O - http://whatismyip.org)"
  if [ "$old_ip" = "$new_ip" ]; then
    echo unchanged IP is $old_ip
  else
    echo changed IP is $new_ip
  fi
  sleep 600
done

Ich denke, das Prinzip ist klar. Statt Echo-Ausgaben im Else-Zweig schickt man eben die E-Mail. Das Skript ist nicht richtig getestet (nur ganz kurz) und behandelt keine Fehlerfälle. Es ruft die IP beispielhaft alle 10 Minuten ab. Das Intervall sollte man nicht zu kurz machen, sonst sagt die Webseite so etwas: Error: 4 requests received from your IP address in the last 60 seconds (current max is 3 but automated agents should not query more often than once every 10 minutes)
 
Ach so, wie baut man das jetzt als Nicht-Programmierer in die debug.cfg ein? Zum Editieren erst mal den Hinweis auf nvi aus dem Posting #13 beachten und Folgendes eintragen in /var/flash/debug.cfg (ungetestet, trotzdem viel Spaß damit):

Code:
{
new_ip="0.0.0.0"
while true; do
  old_ip="$new_ip"
  new_ip="$(wget -q -O - http://whatismyip.org)"
  if [ "$old_ip" != "$new_ip" ]; then
    uptime > /var/tmp/uptime.txt
    mailer \
      -s "New IP: $new_ip" \
      -f "[email protected]" \
      -t "[email protected]" \
      -m "smtp.somedomain.de" \
      -a "smtp-username" \
      -w "smtp-password"
      -i /var/tmp/uptime.txt
    rm -f /var/tmp/uptime.txt
  fi
  sleep 600
done
}&

D.h., der Code kann direkt als Hintergrund-Job (mit & am Ende) ausgeführt werden, ohne eine Skript-Datei zu erzeugen wie beim Original. Es gibt ja keinen externen Prozeß mehr, der die Datei finden müßte.

Schmankerl am Rande: Ich zeige hier auch, wie man Zusatz-Infos im Text der Mail mit schickt, z.B. die Information, wie lange der Rechner seit dem letzten Reboot schon läuft (Uptime). Mir ist das immer wichtig zu wissen, weil ich dann sehen kann, ob die neue IP durch einen Absturz bzw. Stromausfall zustande kam oder einfach durch eine "normale" Unterbrechung der Internetverbindung.
 
Hallo kriegaex,

Danke für dein kleines Script, ich brauche zwar nicht die E-Mail-Benachrichtigung, aber ich will bei Änderung der IP-Adresse die Config meines dnsmasq der auf nem NSLU2 läuft und als externer Nameserver fürs Internet (mit Portweiterleitung DNS-Port auf den NSLU2) dient editieren und dann dnsmasq neu starten mit aktueller IP.
Dafür ist das Script wohl auch gut zu gebrauchen. :)

Und schreibt nicht das geht ja garnicht, das läuft nämlich schon für die WWW-Subdomain meiner Hauptdomain xxxx.ph mit Fritzbox und Apache auf dem NSLU2, nur das ich bisher die IP-Adresse jeden Tag von hand neu eintragen und dnsmasq neu starten muß. :)

tschüs

chriwi
 
@ kriegaex,

Danke schön das werde ich gleich mal probieren wenn ich heute von der Arbeit zu Hause bin! So wie du es bestreibst ist das genau das was ich brauche( gesucht habe)!

Aber eine Frage habe ich noch kann man nicht die Uhrzeit irgend wie festlegen damit er nur um eine bestimmt Uhrzeit das macht ( z.B. um 6 Uhr ) und nicht alle 10 Minuten? Das würde mir schon reichen! Vielleicht kann mir da noch einen Rat geben?
Aber auf jeden Fall würde es mir so auch schon reichen!

Danke dafür!
 
Hallo kriegaex,

hat geklappt mit meinem dnsmasq.conf updater :)
und dyndns läuft auch wieder :)

Also kann ich jetzt wieder ruhig schlafen und wenn ich aufwache sind all meine URLs und Nameserver uptodate. :)

Danke.

tschüs

chriwi
 
Jack_B schrieb:
kann man nicht die Uhrzeit irgend wie festlegen damit er nur um eine bestimmt Uhrzeit das macht ( z.B. um 6 Uhr ) und nicht alle 10 Minuten? Das würde mir schon reichen! Vielleicht kann mir da noch einen Rat geben?

Am besten wäre es, den Danisahne-Mod zu installieren. Er enthält eine Web-Konfigurationsoberfläche für crond, also einen Cron-Daemon, welcher beliebige Kommandos in beliebigen Rhythmen ausführt, also z.B. jeden Morgen um 6 Uhr oder auch nach komplexeren Regeln wie Montags bis Freitags alle drei Stunden usw.

Cron ist ein UNIX-Standardkommando, welches aber in den Original-Firmwares nicht enthalten ist. Du könntest Dir eine Busybox bauen, die crond enthält, so wie die des DS-Mod.

Billig-Alternative: Benutze das date-Kommando, um regelmäßig die Uhrzeit abzufragen und bei Erreichen einer bestimmten Uhrzeit eine Aktivität auszulösen. Beispiel-Modifikation des vorigen Skripts (wieder mal ungetestet):
Code:
{
new_ip="0.0.0.0"
new_hour="05"
while true; do
  old_hour="$new_hour"
  new_hour="$(date +%H)"
  if [ "$old_hour" = "05" -a "$new_hour" = "06" ]; then
    old_ip="$new_ip"
    new_ip="$(wget -q -O - http://whatismyip.org)"
    if [ "$old_ip" != "$new_ip" ]; then
      uptime > /var/tmp/uptime.txt
      mailer \
        -s "New IP: $new_ip" \
        -f "[email protected]" \
        -t "[email protected]" \
        -m "smtp.somedomain.de" \
        -a "smtp-username" \
        -w "smtp-password"
        -i /var/tmp/uptime.txt
      rm -f /var/tmp/uptime.txt
    fi
  fi
  sleep 900  # alle 15 min. aktiv werden
done
}&

Das Skript tut nun Folgendes: Es prüft alle 15 Minuten, ob die Stunde gerade den Wert 6 hat und vorher den Wert 5 hatte, also zuletzt gewechselt hat. Falls ja, wird wieder die aktuelle IP bestimmt und mit der vorigen verglichen. Wenn die beiden wiederum unterschiedlich sind, wird die Benachrichtigung per E-Mail verschickt.

Durch die Startwerte für $new_ip und $new_hour ist gewährleistet, daß, falls die Stunde zufällig 6 ist, die Prüfung positiv ausfällt, weil als Startwert für die alte Stunde 5 vorgegeben ist. Bei der ersten durchlaufenen IP-Prüfung nach Start des Skripts wird dann in jedem Fall eine Nachricht versandt.
 
@kriegaex,

ich habe gestern Abend dieses Skript ausprobiert aber ich bekomme keine E-Mail!

Jetzt kann es sein das ich bei der Eingabe der E-Mail daten was falsch gemacht habe! Aber wenn ich die Debug.cfg auf rufe steht nicht mehr alles in der Datei dring was ich alles mit Kopie eingefügt habe!

Woran liegt das?

Habe nach dem Einfügen mit :w gespeichert und dann mit :q beendet! Danach habe neu gebootet!

Aber immer wieder stehen die Daten nicht mehr in der Debug.cfg warum ?

Kannst du mir da helfen?

{
new_ip="0.0.0.0"
while true; do
old_ip="$new_ip"
new_ip="$(wget -q -O - http://whatismyip.org)"
if [ "$old_ip" != "$new_ip" ]; then
uptime > /var/tmp/uptime.txt
mailer \
-s "New IP: $new_ip" \
-f "[email protected]" \ Hier habe ich meine E-Mail adresse eingetragen
-t "[email protected]" \ Hier habe ich meine E-Mail adresse eingetragen
-m "smtp.somedomain.de" \ Hier habe ich die mailto..... eingetragen
-a "smtp-username" \ Username ist klar
-w "smtp-password" Passwort ist auch klar
-i /var/tmp/uptime.txt
rm -f /var/tmp/uptime.txt
fi
sleep 600
done
}&

War das alles so richtig? Habe also das ganze Skript markiert und eingefügt aber es steht immer nur bis hier old_ip="$new_ip" nur in der Debug.cfg !

Also das wird auch mein Problem sein denke ich aber warum!:confused:

Habe zwar kaum Ahnung vom Programieren aber habe Twonky und Lanstart alles hinbekommen! Aber das hier will irgend wie nicht Klappen!:noidea: :noidea:

Kannst du mir bitte noch mal Helfen!

Danke dir aber schon mal für deine Hilfe!
 
Ich würde an Deiner Stelle erst mal in Telnet in der Shell direkt das Skript ausführen, um zu sehen, ob die Mails ankommen. Wenn das okay ist, kannst Du es in die debug.cfg einbauen und rebooten.

Jack_B schrieb:
Habe nach dem Einfügen mit :w gespeichert und dann mit :q beendet! Danach habe neu gebootet!

Aber immer wieder stehen die Daten nicht mehr in der Debug.cfg warum ?

Nicht umsonst habe ich darauf hingewiesen, daß man mit nvi arbeiten muß, nicht mit vi. In /var/flash kann man nicht direkt speichern, die Daten müssen mit cat dorthin übertragen werden, weil es sich bei den Dateien dort um Character Devices handelt. nvi kümmert sich darum.

Jack_B schrieb:
-m "smtp.somedomain.de" \ Hier habe ich die mailto..... eingetragen

Was immer Du mit "mailto" auch meinst, es muß der Name (oder die IP) des SMTP-Servers (Mailserver für den Versand) rein.

Jack_B schrieb:
War das alles so richtig? Habe also das ganze Skript markiert und eingefügt aber es steht immer nur bis hier old_ip="$new_ip" nur in der Debug.cfg !

Du wirst nicht umhin kommen, ein paar vi-Grundlagen zu lernen, fürchte ich. Oder hast Du den Midnight Commander (mc) installiert? Dann ist Dir mcedit vielleicht sympathischer. Du müßtest allerdings dann ein nmcedit benutzen oder erstellen, das analog nvi funktioniert - oder die Kopiererei der Dateien von Hand machen.
 
@ kriegaex,

also ich habe jetzt viel rum probiert und jetzt habe ich alle Dateien in der Debug.cfg stehen! ABer es läuft immer noch nicht!

Ich habe probiert im telnet es im Shell direkt zu starten aber das läuft leider auch nicht!

Jetzt habe ich keine Idee mehr! Vielleicht sollte ich doch noch etwas das Programieren lernen!

Oder hat vielleicht noch einer eine einfache Idee für mich!

Aber erstmal Danke an alle die mir versucht haben zu Helfen!
 
Fang ganz simpel an: Erst mal nur versuchen, erfolgreich eine Mail von der Kommandozeile aus zu schicken. Danach das Ganze aus einem Skript heraus. Dann erst zeitgesteuert. Genauso verfahren mit der IP-Bestimmung mittels wget. Erst von Hand, dann im Skript, dann zeitgesteuert. Dann siehst Du, wo es hängt. Wenn alles geht, zum Schluß alles in die debug.cfg einbauen.

Und programmieren lernen ist definitiv keine üble Idee. ;-)
 
Lange nichts mehr gehört von Dir, Jack_B. Hat es denn nun geklappt?
 
@kriegaex,

nein leider noch nicht! Habe gerade noch ein paar andere Probleme bekommen das ich noch nicht wieder dazu gekommen bin es weiter aus zu probieren! Aber wenn alles klapt werde ich diese Woche es wieder weiter Versuchen! Muß auch erstmal etwas lernen für das Programieren! Aber ich habe noch nicht aufgegeben!

Werde mich auf jeden Fall melden wenn es geklapt hat oder wenn ich noch Probleme habe!

Gruß an alle die einen soviel Helfen hier!:)
 
Zuletzt bearbeitet:
Hier habe ich noch ein Script, das ohne whatsmyip auskommt. Damit bleibt die eigene IP völlig anonym. Die IP hole ich mir direkt aus der Box.

Einfach mal hier nachschauen:
EMail bei neuer IP-Adresse

Gruß,
MaHaGoNi
 
mensch den Thread hast du aber ausgegraben :) (fast nen Jahr her der letzte Beitrag)
Die IP kannst du dir aus der box per /usr/bin/get_ip holen, ist nen scirpt von kriegaex glaub ich, haben hier auch mal darüber geredet:
http://www.ip-phone-forum.de/showthread.php?t=142594
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.