Seite 1 von 1

Lan Verbindung zum Internet wiederherstellen ?

Verfasst: Sonntag 6. August 2006, 13:26
von Torsten2005
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ß

Verfasst: Sonntag 6. August 2006, 13:51
von beewee
Hi,

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")
das kannst du dann halt per cron alle 5 Minuten ausführen lassen

BeeWee

Verfasst: Sonntag 6. August 2006, 15:05
von birkenfeld
Das ist etwas zuviel des Guten. Ich würde keine HTTP-Verbindung aufbauen lassen, ein socket.gethostbyname("google.de") reicht meiner Meinung nach auch.

Verfasst: Sonntag 6. August 2006, 15:13
von Torsten2005
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.

Verfasst: Sonntag 6. August 2006, 20:27
von Michael Schneider
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

Code: Alles auswählen

system("dir *.py")     ##  windows
system("ls *.py")      ##  UNIX
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:

Code: Alles auswählen

time.sleep(60)    ##  Prozess 60 Sekunden schlafen legen
Mit dieser Funktion legst Du den ganzen Prozess auf Eis, so dass er fast keine Performance kostet.

Grüße,
der Michel

Verfasst: Freitag 11. August 2006, 14:05
von Torsten2005
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:

Code: Alles auswählen

time.sleep(60)    ##  Prozess 60 Sekunden schlafen legen
Mit dieser Funktion legst Du den ganzen Prozess auf Eis, so dass er fast keine Performance kostet.
Hallo ,
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

Verfasst: Sonntag 17. Dezember 2006, 19:50
von guter_hund
hey leute. Bei mir funktioniert das script nicht. google.de wird garnicht erst aufgerufen...

Bitte um Hilfe...

Verfasst: Sonntag 17. Dezember 2006, 20:18
von Leonidas
guter_hund hat geschrieben:Bei mir funktioniert das script nicht. google.de wird garnicht erst aufgerufen...
Fehlermeldung? Quellcode? Dann gucken wir weiter.

Verfasst: Sonntag 7. Januar 2007, 11:53
von bennym
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.

mfg benny

Verfasst: Sonntag 7. Januar 2007, 12:15
von lunar
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.
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.

Verfasst: Sonntag 7. Januar 2007, 13:17
von Crush
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.
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. :)

Crush