Aktuelle IP durch Routerabfrage

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Salli
User
Beiträge: 3
Registriert: Donnerstag 5. August 2004, 11:13

Hallo,
zuerst möchte ich mich für dieses ausgezeichnet gute Forum bei den Betreibern und Postern bedanken. Ich habe hier Einiges gelernt.

Zum Thema:
1) Die aktuelle IP möchte ich durch die Abfrage des DSL-Routers (Netgear RP614v2) herausfinden. Mit welchen Python-Modulen(Funktionen) wäre das möglich?

2) Ist es möglich, bei IP-Änderung sofort die neue IP auszulesen und sie in eine Datei zu schreiben? Die periodische IP-Abfrage mit cron finde ich persönlich nicht so gut, weil
- bei meinem Fall Apache auf meinem PC läuft, der über einen dyndns-Service (Nein, nicht dyndns.org sondern der Provider registerfly.com) erreichbar sein soll. Dafür brauche ich eben die aktuelle IP, die bei einer Änderung an den registerfly-DNS weitergereicht wird. Das macht dieses Script:

Code: Alles auswählen

#!/usr/bin/env python

import sys, urllib, getopt

def main():
    update()
def update():
        o=urllib.urlopen("http://dynamic.registerfly.com/?domain=DOMAIN&password=PASSWD&host=www")
        print "OK"
main()
- die ständige Abfrage sicherlich nicht resourcenschonend ist.

(Also anders als in Dookies Script (http://python.sandtner.org/viewtopic.php?t=79), bei dem die IP erst abgefragt werden muß?)

Ich bedanke mich auch für jeden kleinen Hinweis (Modul, Funktion etc.) im Voraus ;)

Gruß
Salli
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Salli hat geschrieben:- die ständige Abfrage sicherlich nicht resourcenschonend ist.

(Also anders als in Dookies Script (http://python.sandtner.org/viewtopic.php?t=79), bei dem die IP erst abgefragt werden muß?)
Hi Salli. Ich wüsste nicht, wieso die ständige Abfrage nicht resourcenschonend sein sollte. Ein DSL-Router wählt sich doch gewöhnlich nur einmal am Tag neu ein und ein kleines Script, dass die IP wie von Dookie gezeigt alle 5 Minuten einmal checkt drosselt die Leistung deines Rechners nicht im geringsten. Die einzige Optimierung die mir einfallen würde wäre dann zu prüfen, ob die registrierte IP und die momentane identisch sind und nur wenn dies nicht der Fall ist zu aktualisieren. Das ist aber eigentlich der Standart, der meistens beschritten wird.

Ansonsten weiß ich leider nicht, wie man dies anders realisieren könnte.

Code: Alles auswählen

import urllib,socket
ip=urllib.urlopen("http://www.sol.at/fritz/ip.php")
if ip != socket.gethostbyname("DOMAIN"):
    update()
Salli
User
Beiträge: 3
Registriert: Donnerstag 5. August 2004, 11:13

Hallo Milan,
der Router bekommt von Arcor täglich mehrmals neue IP zugewiesen., z.B. nach längerer (ich weiß nicht, wie lange) Inaktivität, Mittagspause etc. Stimmt wohl, ist eigentlich kein große Anstrengung für das System , IP abzustimmen.

Sonst wollte ich es auch so machen, daß dynamische DNS-Daten bei Änderung der IP upgedatet werden.
Ich habe es anders gelöst: Habe einen Account bei dyndns.org, der vom Router Netgear RP614v2 automatisch bedient wird. Also wird IP dieser dyndns.org-Domain abgefragt , mit der gespeicherten IP verglichen und ggf. augedatet.

Router -> dnydns.org -> IP

Somit brauche ich nur ein Python-Script, das regelmäßig ausgeführt wird.

Thx
Salli
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Salli hat geschrieben:... der Router bekommt von Arcor täglich mehrmals neue IP zugewiesen., z.B. nach längerer (ich weiß nicht, wie lange) Inaktivität, Mittagspause etc ...
Hi. Dann wird dein Router wohl aber offline gehen, oder nicht? Solange ist er ja von außen eh nicht erreichbar. Ich würde dir empfehlen einen dauerhaften Ping nach außen laufen zu lassen, so geht er wirklich nur einmal am Tag offline.
Unter win geht das mit ping -t unter lin kannst du dir das -t sparen.

Aus eigenem Interesse: unterstützen Netgear Router dyndns? Mein Router tuts nicht (ist ja auch kein Netgear), deswegen muss ich mein eigenes Script laufen lassen...
Salli
User
Beiträge: 3
Registriert: Donnerstag 5. August 2004, 11:13

Hallo,
Milan hat geschrieben:[Hi. Dann wird dein Router wohl aber offline gehen, oder nicht? Solange ist er ja von außen eh nicht erreichbar.
Ja, Router ist dann offline. Daran hatte ich nicht gedacht. Hmm...

Also Shell-script für ping schreiben, damit das Gerät wieder anspringt? (Es ist ein Debian-System)
Aus eigenem Interesse: unterstützen Netgear Router dyndns? Mein Router tuts nicht (ist ja auch kein Netgear), deswegen muss ich mein eigenes Script laufen lassen...
Ja, aber leider wird nur dyndns.org über die Weboberfläche unterstützt.
Antworten