Hallo , wollte mal fragen ob man es irgendwie realisieren kann , dass man die Lan/Netzwerkverbindung wiederherstellen kann , wenn sie mal abgebrochen ist .
Also genauer gesagt , es passiert manchmal das die Verbindung über einen Router zum Internet abbricht . Dann muss ich den Router aus und wieder einschalten und dann gehts wieder .
kann man das Softwaremässig machen . Also ein kleines Python-programm das im hintergrund läuft und alle 5 min oder so die internetverbindung abfragt und wenn sie weg ist , dann .............. ??
Gruß
Lan Verbindung zum Internet wiederherstellen ?
-
- User
- Beiträge: 34
- Registriert: Mittwoch 2. November 2005, 15:37
- Wohnort: Berlin
- Kontaktdaten:
Hi,
ist das in etwa was du willst?
das kannst du dann halt per cron alle 5 Minuten ausführen lassen
BeeWee
ist das in etwa was du willst?
Code: Alles auswählen
#! /usr/bin/env python
import urllib2
from os import system
try:
urllib2.urlopen("http://google.de")
except ValueError:
system("Befehl zum Neuverbinden")
BeeWee
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Das ist etwas zuviel des Guten. Ich würde keine HTTP-Verbindung aufbauen lassen, ein socket.gethostbyname("google.de") reicht meiner Meinung nach auch.
Zuletzt geändert von birkenfeld am Sonntag 17. Dezember 2006, 20:21, insgesamt 1-mal geändert.
-
- User
- Beiträge: 34
- Registriert: Mittwoch 2. November 2005, 15:37
- Wohnort: Berlin
- Kontaktdaten:
hi , ja das ist schonmal nicht schlecht .
Aber wie per cron ? kenn ich nicht .
alle 5 Minuten ausführen lassen, wollte ich dann vielleicht mit gmtime oder ähnliches machen, also mit modul time.
So , aber Befehl zum Neuverbinden ist das entscheidene.
Ansonsten wenn es nicht geht , muss ich dann wenigstens ein Hinweis (blickendes Fenster) programmieren .
Ich kenn zwar das Modul os aber system kenn ich nicht und daher weiß ich auch nicht wie ich dann system('Befehl zum neuverbinden ') realisieren kann.
Aber wie per cron ? kenn ich nicht .
alle 5 Minuten ausführen lassen, wollte ich dann vielleicht mit gmtime oder ähnliches machen, also mit modul time.
So , aber Befehl zum Neuverbinden ist das entscheidene.
Ansonsten wenn es nicht geht , muss ich dann wenigstens ein Hinweis (blickendes Fenster) programmieren .
Ich kenn zwar das Modul os aber system kenn ich nicht und daher weiß ich auch nicht wie ich dann system('Befehl zum neuverbinden ') realisieren kann.
- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
Hi Torsten,
ich kenne mich noch nicht so gut mit Netzwerken aus, aber Beewee hat die Funktion system aus dem os-Modul importiert. Damit kann man Befehle in derselben Shell ausführen, in der der Pythonprozess läuft. Beispielsweise
Als Argument gibst Du dann das Programm/Script an, das Deine Verbindung aufbaut. 
Über cron jobs kannst Du Dein (nur UNIX?-)Sytem anweisen, zu einem bestimmten Zeitpunkt einen Befehl oder Script auszuführen. Das ist in sofern anders, als dass der Scriptprozess nicht die ganze Zeit im Hintergrund läuft.
Wenn Dir das nichts ausmacht, empfehle ich Dir:
Mit dieser Funktion legst Du den ganzen Prozess auf Eis, so dass er fast keine Performance kostet.
Grüße,
der Michel
ich kenne mich noch nicht so gut mit Netzwerken aus, aber Beewee hat die Funktion system aus dem os-Modul importiert. Damit kann man Befehle in derselben Shell ausführen, in der der Pythonprozess läuft. Beispielsweise
Code: Alles auswählen
system("dir *.py") ## windows
system("ls *.py") ## UNIX

Über cron jobs kannst Du Dein (nur UNIX?-)Sytem anweisen, zu einem bestimmten Zeitpunkt einen Befehl oder Script auszuführen. Das ist in sofern anders, als dass der Scriptprozess nicht die ganze Zeit im Hintergrund läuft.
Wenn Dir das nichts ausmacht, empfehle ich Dir:
Code: Alles auswählen
time.sleep(60) ## Prozess 60 Sekunden schlafen legen
Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
-
- User
- Beiträge: 34
- Registriert: Mittwoch 2. November 2005, 15:37
- Wohnort: Berlin
- Kontaktdaten:
Hallo ,Michael Schneider hat geschrieben: Über cron jobs kannst Du Dein (nur UNIX?-)Sytem anweisen, zu einem bestimmten Zeitpunkt einen Befehl oder Script auszuführen. Das ist in sofern anders, als dass der Scriptprozess nicht die ganze Zeit im Hintergrund läuft.
Wenn Dir das nichts ausmacht, empfehle ich Dir:Mit dieser Funktion legst Du den ganzen Prozess auf Eis, so dass er fast keine Performance kostet.Code: Alles auswählen
time.sleep(60) ## Prozess 60 Sekunden schlafen legen
time.sleep(60) gefällt mir ;
mit 'system' hab ich noch nicht verstanden , die Wiederverbindung soll ja in denselben skribt ausgeführt werden ...
Nur gibt es denn Befehle dafür einen Router ein- und auszuschalten oder ähnliches wie neue ip zuzuweisen ?
Danke erstmal
-
- User
- Beiträge: 19
- Registriert: Montag 4. Dezember 2006, 13:25
hey leute. Bei mir funktioniert das script nicht. google.de wird garnicht erst aufgerufen...
Bitte um Hilfe...
Bitte um Hilfe...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Fehlermeldung? Quellcode? Dann gucken wir weiter.guter_hund hat geschrieben:Bei mir funktioniert das script nicht. google.de wird garnicht erst aufgerufen...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hi Torsten2005
Hast du Windows oder Linux? Unter Windows regelt das soweit ich weis der Befehl "ipconfig /all". Gibs mal in der Windows Befehlszeile ein und kuck obs funzt.
Wenns Plattform uebergreifend sein soll wuerde ich es so probieren:
Mit der ipconfig syntax hab ich mich noch nicht richtig auseinandergesetzt, probier aus, ob /all funktioniert.
Unter Linux muss sudo installiert sein, ansonsten musst du das Script als root starten (mit su). Dazu brauchst du noch unter linux das paket dhclient.
mfg benny
Hast du Windows oder Linux? Unter Windows regelt das soweit ich weis der Befehl "ipconfig /all". Gibs mal in der Windows Befehlszeile ein und kuck obs funzt.
Wenns Plattform uebergreifend sein soll wuerde ich es so probieren:
Code: Alles auswählen
import os
if os.name != 'posix': #posix = Unix
os.system('ipconfig /all') #oder /renew oder /RELEASE
else:
# NIC runterfahren
os.system('sudo ifconfig eth0 down') # wird dann nach passwort fragen
# NIC hochfahren
os.system('sudo ifconfig eth0 up')
os.system('sudo dhclient eth0')
Mit der ipconfig syntax hab ich mich noch nicht richtig auseinandergesetzt, probier aus, ob /all funktioniert.
Unter Linux muss sudo installiert sein, ansonsten musst du das Script als root starten (mit su). Dazu brauchst du noch unter linux das paket dhclient.
mfg benny
Wenn cron zum Starten des Skripts verwendet wird, ist "sudo" in der Regel überflüssig; cron startet Jobs mit root-Rechten.bennym hat geschrieben:Hi Torsten2005
Hast du Windows oder Linux? Unter Windows regelt das soweit ich weis der Befehl "ipconfig /all". Gibs mal in der Windows Befehlszeile ein und kuck obs funzt.
Wenns Plattform uebergreifend sein soll wuerde ich es so probieren:
Code: Alles auswählen
import os if os.name != 'posix': #posix = Unix os.system('ipconfig /all') #oder /renew oder /RELEASE else: # NIC runterfahren os.system('sudo ifconfig eth0 down') # wird dann nach passwort fragen # NIC hochfahren os.system('sudo ifconfig eth0 up') os.system('sudo dhclient eth0')
Mit der ipconfig syntax hab ich mich noch nicht richtig auseinandergesetzt, probier aus, ob /all funktioniert.
Unter Linux muss sudo installiert sein, ansonsten musst du das Script als root starten (mit su). Dazu brauchst du noch unter linux das paket dhclient.
Zum aktivieren/deaktivieren würde ich außerdem eher "ifup" und "ifdown" verwenden, da diese Programme die Einstellungen in /etc/network/interfaces beachten.
Naja, so stimmt das auch nicht. In der /etc/crontab gibt es ein Feld "user", wo man festlegen kann, unter welchem user das Kommando ausgeführt werden soll. Hier sind auch "normale" user möglich. Die crontab's, die man mit "crontab -e" editiert werden dann unter dem jeweiligen user ausgeführt.lunar hat geschrieben:Wenn cron zum Starten des Skripts verwendet wird, ist "sudo" in der Regel überflüssig; cron startet Jobs mit root-Rechten.
Zum aktivieren/deaktivieren würde ich außerdem eher "ifup" und "ifdown" verwenden, da diese Programme die Einstellungen in /etc/network/interfaces beachten.

Crush