Script ausführen bei Netzwerkverbindung

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
meinereiner85
Beiträge: 3
Registriert: 17.10.2007 17:14:59

Script ausführen bei Netzwerkverbindung

Beitrag von meinereiner85 » 14.07.2011 20:16:49

Hallo alle zusammen,

ich möchte erreichen, dass ich sowie ich ein Netzwerkkabel in die Netzwerkbuchse einstecke und eine Datenverbindung besteht, ein Skript von mir ausgeführt wird. Die Netzwerkkarte hat eine statische IP.

Ich habe schon mit Script in /etc/network/if-up.d experimentiert, jedoch werden diese nur ausgeführt, wenn ich den Netzwerkservice durchstarte und nicht, wenn ich die Netzwerkverbindung für einige Zeit ziehe und wieder einstecke. Auch habe ich schon mit "up"-Statements in den Netzwerk-Konfigs experimentiert. Alles ohne Erfolg.

Hat jemand eine Idee?

Gruß
meinereiner

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Script ausführen bei Netzwerkverbindung

Beitrag von ThorstenS » 14.07.2011 20:29:22

schau dir mal Debianifplugd oder Debiannetplug an - evtl. können die dir dabei helfen.

meinereiner85
Beiträge: 3
Registriert: 17.10.2007 17:14:59

Re: Script ausführen bei Netzwerkverbindung

Beitrag von meinereiner85 » 15.07.2011 09:25:52

Hallo,

ich habe ein wenig mit ifplugd herumexperimentiert (netplug kommt für mich nicht in Frage).
Leider triggert auch ifplugd nicht meine Scripte an. Ich habe folgendes gemacht:

1. /etc/network/interfaces unverändert gelassen (statische IP)
2. ifplugd installiert
3. /etc/default/ifplugd editiert:
INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"
4. Script unter /etc/ifplugd/action.d/ erstellt und ausführbar gemacht und auch manuell getestet
5. Netzwerk durchgestartet (/etc/init.d/networking restart)
6. ifplugd durchgestartet (/etc/init.d/ifplugd restart) -> hier wird auch gemeldet, dass eth0 verwendet wird.

Woran kann es noch liegen?

Gruß
meinereiner85

Benutzeravatar
Livingston
Beiträge: 1816
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: Script ausführen bei Netzwerkverbindung

Beitrag von Livingston » 18.07.2011 17:37:07

meinereiner85 hat geschrieben: INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
Nicht sicher, aber das sieht mir doppelt gemoppelt aus. Außerdem: Hast Du wirklich eine PCMCIA-Karte oder ähnliches eingebaut, für die Du HOTPLUG_INTERFACES brauchst? Denn bei statischer IP tippe ich mal, dass es nicht um 'nen Laptop geht.
meinereiner85 hat geschrieben: ARGS="-q -f -u0 -d10 -w -I"
Vielleicht mal der Karte Zeit zum Luftschnappen geben und -u0 auf eine Sekunde raufsetzen: -u1

Edit/Ergänzung:
Statt mit dem up statement in /etc/network/interfaces zu arbeiten, kannst Du auch Scripte in /etc/network/if-up.d/ unterbringen. Hierbei drauf achten, dass der Exit-Status 0 ist, sonst bricht ifup, das diese Aufgabe beim Hochfahren übernimmt, den Vorgang ab.
Dies hat aber nichts mit dem Überprüfen der Kabelverbindung zu tun. Diese sollte tatsächlich mit ifplugd getestet werden.

Benutzeravatar
unitra
Beiträge: 646
Registriert: 15.06.2002 21:09:38
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.128.129.130

Re: Script ausführen bei Netzwerkverbindung

Beitrag von unitra » 19.07.2011 00:32:20

Du solltest auf die Erreichbarkeit des enfernten hosts mal überprüfen. Denn die Verbindung ist erst da, wenn der entfernte Hop, der entfernte Host per ICMP erreichbar ist (sprich wenn du in Pingen kannst).

Du könntest den IP Host, anpingen und darüber die Entscheidung machen wann das Skript ausgeführt wird.
z.B. alle 5 Minuten einen Cronjob zur Auswertung des ICMP Traffics anlegen, wenn entfernter Host ICMP Reply sendet, dann das Skript ausführen lassen.

Das würde funktionieren, schlimmer ist aber sich die Abbruchbedingung zu überlegen, weil wenn Host per ICMP erreichbar ist, dann alle 5 Minuten wird das Skript ausgeführt.

Die Abbruchbedingung könnte so aussehen, wenn letzer Test(vor 5 Minuten ICMP Reply positiv) dann Skript aber nicht ausführen. Erst wenn z.B "Destination Host Unreachable" im letzen Ping Test als ICMP Reply geschickt wurde.

Benutzeravatar
Livingston
Beiträge: 1816
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: Script ausführen bei Netzwerkverbindung

Beitrag von Livingston » 19.07.2011 04:34:49

unitra, darum geht's gerade nicht, sondern um die Frage, ob das Kabel steckt oder nicht, also ob eine Verbindung im Link Layer1 und somit eine Protokollschicht unterhalb von TCP/IP und ICMP existiert.
Die üblichen Startscripte in /etc/init.d/ und damit verbändelten Verzeichnisse testen nicht auf dieser Ebene, sondern setzen eine existierende Verbindung stillschweigend voraus. Deshalb sind zwei Probleme zu lösen: Beim Starten nachschauen, ob das Kabel steckt, und testen ob sich daran im laufenden Betrieb etwas ändert. Dies leistet ifplugd.

uname
Beiträge: 12481
Registriert: 03.06.2008 09:33:02

Re: Script ausführen bei Netzwerkverbindung

Beitrag von uname » 19.07.2011 09:20:18

Entweder kann man vielleicht folgendes nutzen:

Code: Alles auswählen

ifconfig 
...
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
...
oder vielleicht sogar die Datei

Code: Alles auswählen

/proc/net/dev 
Vielleicht gibt es im /proc-Filesystem auch bessere Werte, kenn mich damit leider nicht aus.

Nachtrag:
Habe gerade mal den Sourcecode von "ifplugd" ( http://packages.debian.org/source/squeeze/ifplugd ) gelesen. Interessant ist das Programm ifplugstatus (ifplugstatus.c), welches auch /proc/net/dev nutzt.

elmstop
Beiträge: 12
Registriert: 25.07.2010 09:05:56

Re: Script ausführen bei Netzwerkverbindung

Beitrag von elmstop » 19.08.2011 21:15:55

Hallo,
hier vielleicht ein Lösungsansatz:
Link
Gruß
Peter

Huch gerade gesehen der Eintrag ist uralt...

Antworten