PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Netplugd / Ifplugd - Tools, die erkennen, ob eine Verbindung zum Netz besteht



giftnudel
13.01.04, 16:01
Hallo,

Wer kennt es nicht von Windows: Wenn ich das Netzwerkkabel herausziehe, wird das Netzwerk erst einmal deaktiviert, schliesse ich es jetzt an einem neuen Netzwerk an (wenn möglich mit DHCP-Server), so wird die Netzwerkkarte wieder aktiviert und bekommt dann gleich eine neue IP zugewiesen. Dies ist vor allem für Laptops extrem praktisch, die man einfach ans Netzwerk anschliessen kann, ohne die Netzwerkkarten einrichten zu müssen (funktionierendes pcmcia/hotplug vorrausgesetzt). So kann ein Notebook in der Firma und zu Hause mit der gleichen Konfiguration betrieben werden.

Unter Linux habe ich dieses Verhalten bis jetzt vermisst, doch als ich für meinen Vater einen Laptop einrichten sollte, musste ich dafür sorgen, dass genau das funktioniert.

Ich bin bei meiner Suche im Internet auf netplug (http://www.red-bean.com/~bos/) und ifplugd (http://www.stud.uni-hamburg.de/users/lennart/projects/ifplugd/) gestossen

Zitat von der Netplug seite:
Netplug is a Linux daemon that manages network interfaces in response to network cables being plugged in and out. If you're familiar with Windows XP, which just does the Right Thing when you plug an ethernet cable into a laptop, netplug will need no further explanation.

Basically, netplug brings up an interface and runs a DHCP client when a cable is plugged into that interface, and it brings the interface down when the cable is unplugged. On a typical Linux system or laptop, you have to run a command (such as "/sbin/ifup") manually to handle these events, but netplug automates this for you.

Zitat von der Ifplugd seite:
ifplugd is a Linux daemon which will automatically configure your ethernet device when a cable is plugged in and automatically unconfigure it if the cable is pulled. This is useful on laptops with onboard network adapters, since it will only configure the interface when a cable is really connected.


Ifplugd habe ich leider nicht mit dem 2.6er Kernel zum laufen bekommen, was aber nicht heisst, dass es nicht gehen könnte.

Ich hoffe, das war für irgendwen hilfreich :)

giftnudel

Reset2000
13.01.04, 19:02
Das geht aber auch einfacher: Wenn man diese Zeile in die /etc/crontab einträgt, wird jede Minute das Network device abgefragt, ob eine Verbindung besteht und wenn nicht, startet er das device neu:

0,1 * * * * root ping -c 1 [IP] > /dev/null || (/sbin/service network restart &); sleep 6 | ps xww | grep service | cut -c1-5 | xargs -i kill {}

[IP] = eigene IP

Reset2000
14.01.04, 10:14
Ich hab eben mal oben geprüft ob es funktioniert und habe gemerkt, dass man es doch anders machen muss und zwar in 2 Zeilen einteilen. Das sieht dann folgendermaßen in der /etc/crontab aus:

0,1 * * * * root ping -c 1 [IP] > /dev/null || /sbin/service network stop
0,1 * * * * root ping -c 1 [IP] > /dev/null || (( /sbin/service network start &); sleep 6; ps xww | grep service | cut -c1-5 | xargs -i kill {})

[IP] = ist die eigene IP
Dann geht es! Zumindest bei mir.

Reset2000
14.01.04, 10:23
Jetzt ist es oben richtig. Endlich!

fs111
14.01.04, 18:42
Original geschrieben von Reset2000
Ich hab eben mal oben geprüft ob es funktioniert und habe gemerkt, dass man es doch anders machen muss und zwar in 2 Zeilen einteilen. Das sieht dann folgendermaßen in der /etc/crontab aus:

0,1 * * * * root ping -c 1 [IP] > /dev/null || /sbin/service network stop
0,1 * * * * root ping -c 1 [IP] > /dev/null || sleep 2; ps xww | grep service network start | cut -c1-5 | xargs -i kill {}

[IP] = ist die eigene IP
Dann geht es! Zumindest bei mir.

ISt ja alles ganz schön und gut, aber damit erzeugst dann doch eine menge Systemlast, vorallem die ganzen Pipes etc. und das jede Minute. Ist fraglich, ob das so sinnvoll ist...

fs111

Reset2000
14.01.04, 19:18
Original geschrieben von fs111
ISt ja alles ganz schön und gut, aber damit erzeugst dann doch eine menge Systemlast, vorallem die ganzen Pipes etc. und das jede Minute. Ist fraglich, ob das so sinnvoll ist...

fs111

Naja, das ist von verschiedenen Faktoren abhängig, bei einer guten Netzwerkkarte von 3com oder Intel, hast Du keine Systemlast, da macht das die Karte. vollständig selbst.
Zum anderen, ein Ping macht keine Systemlast und man muss bedenken, dass andere Programme auch nicht feststellen können, ob eine Verbindung möglich ist, ohne sich anzumelden.
Das prikäre ist die Frage des Timeouts. Und den kann ich halt mit sleep nur Sekundenweise setzen, indem ich den Prozess kille.
Ich bezweifle aber, dass man die Performacelast bis zum killen bemerkst.

giftnudel
14.01.04, 22:11
Hallo,

man bedenke, dass Ifplugd/Netplugd die Informationen firekt vom Kernel bekommen, da dieser eine Kabeltrennung meldet :)

giftnudel

Reset2000
15.01.04, 08:08
Original geschrieben von giftnudel
Hallo,

man bedenke, dass Ifplugd/Netplugd die Informationen firekt vom Kernel bekommen, da dieser eine Kabeltrennung meldet :)

giftnudel

Der Kabelkontakt hat nichts damit zu tun, du kannst ja das Kabel im Computer stecken haben, aber nicht in der Buchse. Wer nun letzlich prüft ob eine Verbindung besteht ist eigentlich egal.
Mit meiner Möglichkeit setze ich den Timeout nur sehr kurz. Das bedeutet, dass sehr langsame Verbindungen, als nicht vorhanden erkannt werden, obgleich praktisch eine bestehen könnte, z.B wenn eine hohe Netzwerklast den DNS Server beschäftigt.

giftnudel
15.01.04, 11:35
Hi,

doch hat es, der Router oder Switch sendet ein Prüfsignal auf dem Kabel, dass die Netzwerkkarte empfängt. Deswegen leuchtet auch das Licht am Router auf. Dieses wird vom Kernel registriert und von den Programmen ausgewertet.

giftnudel