Wie kann ich in einem Script feststellen, ob eine Verbindung mit dem Internet besteht, d.h. ob der DSL-Router online ist. Bisher habe ich für eine DFÜ-Verbindung dazu EnumConnections aus win32ras verwendet.
Ich verwende also Windows XP mit Python 2.4.2.
Danke
HWK
DSL-Router online?
Meinen Router habe ich aber so eingestellt, dass er sich automatisch bei Bedarf einwählt. Mein Script soll seine Aufgaben jedoch nur erledigen, wenn eine Internetverbindung bereits von einem anderen Programm hergestellt wurde.
MfG
HWK
MfG
HWK
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi HWK!HWK hat geschrieben:Meinen Router habe ich aber so eingestellt, dass er sich automatisch bei Bedarf einwählt.
Es gibt viele Router, die man mit Telnet bedienen kann. Dann müsstest du dirch nur per ``telnetlib`` zum Router verbinden, die Seite mit den Statusinformationen aufrufen und analysieren.
Es gibt viel mehr Router, die nur mehr per HTTP bedienbar sind. Du könntest per ``urllib2`` die entsprechende HTML-Seite des Routers öffnen und die Rückgabe analysieren.
Da hilft nur ein bischen probieren.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hie, Gerold!
Das klingt gut. Ich hatte schon dran gedacht mich per socket oder urllib2 mit dem Router zu verbinden, um festzustellen, ob er eingeschaltet ist. Die Idee dann auch gleich die Statusseite zu analysieren, um zu sehen, ob eine Internet-Verbindung besteht, ist natürlich noch besser. Das werde ich demnächst ausprobieren.
Danke
HWK
Das klingt gut. Ich hatte schon dran gedacht mich per socket oder urllib2 mit dem Router zu verbinden, um festzustellen, ob er eingeschaltet ist. Die Idee dann auch gleich die Statusseite zu analysieren, um zu sehen, ob eine Internet-Verbindung besteht, ist natürlich noch besser. Das werde ich demnächst ausprobieren.
Danke
HWK
Dann wirst Du wohl auch den Router irgendwie befragen müssen. Hat der ein Webinterface das man ansprechen kann?
Wenn du die Statusseite analysieren willst, würde ich dir zu mechanoid raten. Dann musst du dich nicht mit dem ganzen HTTP/HTML selbst rumschlagen.
Die Doku ist zwar etwas spärlich, aber eigentlich isses ganz simpel und mit den Docstringskommt man gut zurande.
Die Doku ist zwar etwas spärlich, aber eigentlich isses ganz simpel und mit den Docstringskommt man gut zurande.
die meisten "modernen" Router haben den UPnP InternetGatewayDevice Dienst dabei, damit solltest Du den Leitungszustand feststellen können.HWK hat geschrieben:Meinen Router habe ich aber so eingestellt, dass er sich automatisch bei Bedarf einwählt. Mein Script soll seine Aufgaben jedoch nur erledigen, wenn eine Internetverbindung bereits von einem anderen Programm hergestellt wurde.
Bzw. wenn es ein guter Router ist, dann kannst Du ihn vielleicht per SNMP abfragen.
Beides ist aufwendiger, wäre aber halt allgemeingültiger als z.B. 'ne html-Seite zu parsen.
Ciao,
dev
Vielen Dank schon mal für die vielen Antworten.
Ich hab's mal probiert. Die Statusseite lässt sich problemlos mit urllib2 einlesen. Die Daten sind zwar Java, es wird dabei aber eine Variable inet_status gesetzt, die über den Verbindungsstatus Auskunft gibt. Das scheint also ganz einfach zu klappen.
Die anderen Vorschläge klingen interessant (SNMP und UPnP InternetGatewayDevice). Ich habe davon aber keine Ahnung. Könnte mir vielleicht jemand ein paar Tips geben, wie man so etwas prinzipiell in Python umsetzt?
MfG
HWK
Ich hab's mal probiert. Die Statusseite lässt sich problemlos mit urllib2 einlesen. Die Daten sind zwar Java, es wird dabei aber eine Variable inet_status gesetzt, die über den Verbindungsstatus Auskunft gibt. Das scheint also ganz einfach zu klappen.
Die anderen Vorschläge klingen interessant (SNMP und UPnP InternetGatewayDevice). Ich habe davon aber keine Ahnung. Könnte mir vielleicht jemand ein paar Tips geben, wie man so etwas prinzipiell in Python umsetzt?
MfG
HWK
Das ist meine Lösung:MfG
HWK
Code: Alles auswählen
#!/usr/local/bin/python
from urllib2 import urlopen, URLError
URL = 'http://192.168.2.1/top_status.stm'
def CheckConnection():
try:
stream = urlopen(URL)
except URLError:
return False
try:
for line in stream:
if line.startswith('var inet_status = '):
return (line[18] == '7') # Verbindung aktiv
except: # Ich weiss, ich weiss
pass
return False
if __name__=='__main__':
print 'Internetverbindung aktiv: %s' % CheckConnection()
HWK