Mehrere DHCP Einträge in hostname.if

simonz

OpenBSD Fanboy
Hallo,

ich besitze einen Laptop (Thinkpad 600) mit OpenBSD 3.8-current und einer rtw(4) WLAN Karte (Netgear MA521).

Es läuft alles wunderbar, nur ist da etwas, was mich stört:
Ich hab bei einem Freund ein Kabelloses Netzwerk und bei mir zu Hause.
Beide verschlüsselt, verschiedene Namen (ist eigentlich klar) und Addressvergabe per DHCP.
Wenn ich jetzt unter /etc/hostname.rtw0 zwei Einträge, also für jedes Netz einen, habe, sieht das so aus:
/etc/hostname.rtw0 schrieb:
dhcp NONE NONE NONE nwid FOO nwkey deadbeef
dhcp NONE NONE NONE nwid BAR nwkey coffeebabe

Wenn ich dann sh netstart ausführe, wird dhclient erst mit der ersten Option (Netz FOO)
und dann mit der zweiten Option (Netz BAR) gestartet.

Das Problem ist nur, wenn der erste Eintrag richtig ist (bin zu Haus mit Netz FOO)
bekommt rtw eine Netzwekaddresse per DHCP zu geteilt, die Karte verliert sie aber dann wieder,
weil dhclient danach ja nocheinmal aufgerufen wird für Netz BAR.

Ich weiß, ich könnte auch einfach jeweils den nicht benötigten Eintrag auskommentieren,
aber vielleicht gibt es ja eine elegantere (= weniger aufwendige ;) ) Lösung.
Oder vielleicht ist die Konfiguration ja nicht das gelbe vom Ei und es gibt
einen anderen Weg sowas zu lösen.

Es wäre super, wenn jemand vielleicht einen Vorschlag parat hätte,
der mir irgendwie weiterhelfen könnte.

Danke im vorraus.
simon
 
hi,

statt dort beides einzutragen.. ein sh-script schreiben, dass
den ersten dhclient startet und dessen "erfolg" bewertet.
wenn der erste failed dann halt doch den 2. starten..
 
Gute Idee!
Man kann ja mittels
Code:
!/path/to/shellscript.sh
ein "externes" Programm starten.

Da wär' ich jetzt nicht drauf gekommen.
Ich probier' das morgen aus, wenn ich zu Hause bin.

Danke double-p :)
 
/etc/hostname.rtw0 schrieb:
!/usr/local/sbin/wlstart
Code:
#!/bin/sh
FOO='nwid FOO nwkey deadbeef'
BAR='nwid BAR nwkey c0ffee'

ifconfig rtw0 $FOO
dhclient rtw0

if [ ! $? -eq 0 ]; then
     echo "Connect to first net failed, next one"
     ifconfig rtw0 $BAR
     dhclient rtw0
else
     echo "Got address from first net"
fi

Quick and dirty, but it works ;)

Danke nochmal für den Tipp, double-p!
 
Wenn ich mal die Leiche hier fleddere, dann frage ich mich, ob das in 5.3 mittlerweile einfacher geht oder ob das immer noch Mittel der Wahl ist?

Hier gibt es ein ausuferndes PERL-Script für solche Probleme:
http://www.bsdguides.org/2012/a-simple-console-wireless-network-manager-for-openbsd/

Eine Lösung bei der ich Zeilenweise in die hostname.if eintrage und /etc/netstart stoppt, wenn es eine funktionierende Verbindung hat, fände ich aber deutlich eleganter.
 
Ich hab mir einfach für jedes Netzwerk jeweils ein script hinterlegt die ich dann manuell ausführe:
Vorteil: Das Ding verbindet sich definiert mit dem Netzwerk das ich möchte. Das ist auch Super wenn z.B. mehrere Ausgestrahlt werden und ich in der einen Situation das eine, in der anderen das andere verwenden möchte.

So mach ich das mit .bat Dateien unter Windows 7 übrigens auch
 
Ich hab mir einfach für jedes Netzwerk jeweils ein script hinterlegt die ich dann manuell ausführe:
Vorteil: Das Ding verbindet sich definiert mit dem Netzwerk das ich möchte.

Was ist denn der Vorteil gegenüber einer Config-Datei mit den hinterlegten Netzwerken und einer hostname.if, die das dann bei Bedarf abarbeitet?
Ob ich das nun auf mehrere Dateien verteile oder nicht, mach den Braten auch nicht fett - aber vielleicht übersehe ich ja etwas. :o
 
Zurück
Oben