Kennt jemand eine Möglichkeit, eine Änderung der IP-Adresse in Linux zu erkennen? Angenommen, ich habe dhcpcd ausgeführt und weist eine neue IP-Adresse zu. Gibt es eine Möglichkeit, eine Benachrichtigung zu erhalten, wenn sich die IP-Adresse ändert? Ich kann D-Bus nicht verwenden, da dies ein eingebetteter ucLinux-Build ist, den es nicht hat.
inotify auf etwas in / proc / net /?
Dies ist eine alte Frage, aber ich werde für diejenigen, die von Google (wie mich) ankommen, antworten. Nachdem ich eine Weile gerungen hatte, fand ich heraus, dass man dafür nicht notwendigerweise eine C-Lösung abfragen oder hacken muss. Für meinen Fall wollte ich die Domain meines Heimservers (dynamische DNS) aktualisieren, wenn sich die IP ändert.
Wenn Sie dhcpcd
ausführen, haben Sie Glück. dhcpcd
wird Hook-Skripte ausführen, wenn etwas passiert. Siehe man dhcpcd-run-hooks
(hier online) . Grundsätzlich möchten Sie Ihre eigenen dhcpcd.enter-hook
oder dhcpcd.exit-hook
ändern oder erstellen, je nachdem, was Sie mit den vom Ereignis bereitgestellten Daten machen möchten.
Der Befehl
%Vor%wird Ihnen zeigen, dass so etwas passiert. Es verwendet einige der netlink API, die ziemlich schwierig und nicht gut dokumentiert ist (zumindest für Menschen zu verstehen). Es ist jedoch in der Lage, vom Kernel über verschiedene Ereignisse benachrichtigt zu werden, z. B. Änderungen zugewiesener IPs, Routingtabellen und Verbindungsstatus (z. B. wenn jemand das Netzwerk aus dem Netz zieht)
Da DHCP-Aktivitäten an syslogd gesendet werden, können Sie eine Named Pipe erstellen, Syslog-Datenverkehr dorthin leiten und den Stream nach Aktualisierungen der IP-Adresse beobachten. Siehe 'man syslogd' und 'man syslog.conf'.
Bearbeiten: Ein anderer Ansatz wäre, inotify zu verwenden, um die DHCP-Leasedatei für die Schnittstelle zu überwachen. Unter Ubuntu 9.10 befindet sich das im Verzeichnis / var / lib / dhcp3.
Woran ich gedacht habe, war, dieses Skript von Cron alle 10 Minuten auszuführen, abhängig von Ihrem Link. Wenn ich das richtig geschrieben habe, wird es nur aktualisiert, wenn eine IP-Änderung erfolgt, so dass keine unnötige Last auf dem Master-Server der Zone entsteht.
%Vor%Dies ist ein älterer Thread, aber für den Fall, dass jemand es so findet wie ich, habe ich etwas geschrieben, das die Netzwerkerkennung / -benachrichtigung in Linux eine Weile zurück ändert (hauptsächlich um VPN-Benutzern zu helfen), und dank ein paar aufdringlichen Freunden für andere zu verwenden. Es ist jetzt ein Haustier-Projekt und ich bin dabei, es aktiv zu halten, daher sind Feature-Anfragen und Feedback willkommen.
Ich denke, du kannst dbus dafür auf modernen Linux-Distributionen verwenden. Wenn Ihre Distribution NetworkManager verwendet, finden Sie in diesem Dokument Informationen zu seiner dbus-Schnittstelle:
Wenn Sie einen Router haben, auf dem DD-WRT läuft und die Statusseite verwendet wird, wenn Sie zum Router gehen, können Sie mit einem Skript ... die Statusseite, cat für die IP-Adresse eingeben und in eine Datei schreiben Zum Vergleich, senden Sie eine E-Mail, wenn sich die letzte wget IP-Adresse von der Vergleichsdatei geändert hat.
Ich führe dd-wrt auf einem Linksys Wrt54g Router und verwende dieses Skript: Es wettet die Router-Statusseite von 192.168.3.1, verwendet cat auf der Seite (index.html) und greps für die wan-IP-Adresse und schreibt sie dann in eine Datei (gotip.txt).
Es wird ein Vergleich zwischen der erfassten IP (gotip.txt) und der aktuellen Arbeits-IP (workingip.txt) gemacht. Wenn die IP-Adressen unterschiedlich sind, erhalte ich per E-Mail eine E-Mail mit der neuen IP-Adresse und die neue Arbeits-IP wird in die Datei workingip.txt geschrieben.
Cron laufe das alle 5 Minuten oder so und ich lasse die Cron-Ausgabe zu / dev / null stummgeschaltet werden
%Vor%