Hi
bei jedem Systemstart muß ich für mein Wlan0 Interface mit ifconfig die IP setzen, danach mit iwconfig den channel, essid und key einstellen, und ein default gw hinzufügen.
Kann ich das automatisieren? Und geht das sogar soweit das mein Laptop mitbekommt, ob ich daheim oder im Büro bin, und die Daten automatisch setzt?
Wlan Profile
- BeS
- Moderator
- Beiträge: 3236
- Registriert: 17.04.2002 18:30:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Stuttgart
-
Kontaktdaten:
Hallo,
du kannst in deiner /etc/network/interfaces verschiedene Profile anlegen. Bei mir sieht die Datei dann an den entscheidenden Stellen so aus:
das mapping script:
Die Datei scheme wird bei mir während des booten mit einem kleinen init script erstellt. Da wird dann entweder "home"oder "uni" reingeschrieben, je nachdem wo ich bin.
Zum booten verwende ich dann zwei runlevel welche ich im bootmanager auswählen kann, eines für zu Hause und eines für die Uni. Das bietet sich an, da ich an der Uni sowieso weniger Sachen lade, z.B. kein sshd, nfs-server, cups usw.
du kannst in deiner /etc/network/interfaces verschiedene Profile anlegen. Bei mir sieht die Datei dann an den entscheidenden Stellen so aus:
Code: Alles auswählen
mapping ath0
script /etc/network/map-scheme.sh
map home ath0-home
map uni ath0-uni
iface ath0-home inet dhcp
wireless_essid MyHomeNetwork
wireless_key xxxxxxxxxxxxxxxxxxxxxxxxx restricted
iface ath0-uni inet dhcp
wireless_essid infvpn
wireless_key off
Code: Alles auswählen
#!/bin/sh
iface="$1"
if [ "$iface = ''" ]; then iface="ath0"; fi
[ -f /etc/network/scheme ] || exit 1
scheme=$(cat /etc/network/scheme)
echo $iface-$scheme
exit 0
Zum booten verwende ich dann zwei runlevel welche ich im bootmanager auswählen kann, eines für zu Hause und eines für die Uni. Das bietet sich an, da ich an der Uni sowieso weniger Sachen lade, z.B. kein sshd, nfs-server, cups usw.
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support
Ich spreche von Freier Software!
Ich spreche von Freier Software!
Sieht gut aus, aber ich verstehe nur sehr grobe Züge davon, könnteest du das zum verständniss für einen Linux neuling etwas kommentieren?
Was genau tun die Bereiche in der /etc/network/interfaces?
Das untere Zitat ist die map-sheme.sh, richtig? Woher bekommt die beim Aufruf ihre Parameter? Könntest du das etwas kommentieren?
Vielen dank.
Was genau tun die Bereiche in der /etc/network/interfaces?
Das untere Zitat ist die map-sheme.sh, richtig? Woher bekommt die beim Aufruf ihre Parameter? Könntest du das etwas kommentieren?
Vielen dank.
- BeS
- Moderator
- Beiträge: 3236
- Registriert: 17.04.2002 18:30:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Stuttgart
-
Kontaktdaten:
Hallo,
ok ich versuche es mal etwas zu erklären.
Fangen wir von unten an, du entscheidest dich z.B. das runlevel 2 bei dir zu Hause gebootet wird und runlevel 3 im Büro. Dafür legst du jetzt zwei Einträge in deinem bootmenu (grub oder lilo) an, dass du beim booten auswählen kannnst welches runlevel gebootet wird.
In den runlevels hast du dann ein Script (S89netscheme) das ungefahr so aussieht:
Zeile 2, 4 und 5 sind nur ein paar Meldungen die dann während des booten ausgegeben werden, braucht man nicht wirklich sieht aber etwas schöner aus.
In Zeile 3 wird die Datei /etc/network/scheme mit erzeugt in der nur "home" steht. Danach wird in Zeile 6 das Netzwerkinterface gestartet (bei mir ath0).
Das gleiche script machst du jetzt in runlevel 3 nur dass dann bei mir "uni" in die Datei geschrieben wird und bei dir vielleicht "buero" oder was ähnliches. Den device für die Netzwerkkarte mußt du vielleicht auch anpassen.
Jetzt kommt die /etc/network/interfaces ins Spiel, diese wird durch den ifup Befehl von oben ausgelesen.
Die sieht im ganzen so aus:
In mapping wird jetzt gesagt, dass du den "normalen" device Namen (bei mir ath0) auf einen anderen "ändern" willst. Dazu wird das script /etc/network/map-scheme.sh aufgerufen. Dieses gibt "home" oder "uni" zurück, je nachdem wird dann aus ath0 ath0-home oder ath0-uni und das entsprechende interface darunter geladen.
Das script:
macht nichts anderes als in die Datei /etc/network/scheme (die haben wir ja beim booten erzeugt) zu schauen und den Inhalt zurück zu geben. Wichtig ist, dass du hier wieder evtl. das Interface anpasst (also mein ath0 ist bei dir vielleicht ein eth0, wlan0 oder was ähnliches).
Als Parameter kannst du den device übergeben, wenn kein Device übergeben wurde wird der Device genommen der in der Datei angegeben ist, hier ath0.
Ich hoffe das war jetzt einigermaßen verständlich.
Probier es einfach mal aus und wenn etwas nicht ganz klappt, dann melde dich wieder.
ok ich versuche es mal etwas zu erklären.
Fangen wir von unten an, du entscheidest dich z.B. das runlevel 2 bei dir zu Hause gebootet wird und runlevel 3 im Büro. Dafür legst du jetzt zwei Einträge in deinem bootmenu (grub oder lilo) an, dass du beim booten auswählen kannnst welches runlevel gebootet wird.
In den runlevels hast du dann ein Script (S89netscheme) das ungefahr so aussieht:
Code: Alles auswählen
#!/bin/sh
echo -n "setting network scheme: home"
echo "home" > /etc/network/scheme
echo "."
echo -n "Starting wlan interface: ath0"
ifup ath0 > /dev/null
In Zeile 3 wird die Datei /etc/network/scheme mit erzeugt in der nur "home" steht. Danach wird in Zeile 6 das Netzwerkinterface gestartet (bei mir ath0).
Das gleiche script machst du jetzt in runlevel 3 nur dass dann bei mir "uni" in die Datei geschrieben wird und bei dir vielleicht "buero" oder was ähnliches. Den device für die Netzwerkkarte mußt du vielleicht auch anpassen.
Jetzt kommt die /etc/network/interfaces ins Spiel, diese wird durch den ifup Befehl von oben ausgelesen.
Die sieht im ganzen so aus:
Code: Alles auswählen
auto lo
iface lo inet loopback
mapping ath0
script /etc/network/map-scheme.sh
map home ath0-home
map uni ath0-uni
iface ath0-home inet dhcp
wireless_essid MyHomeNetwork
wireless_key xxxxxxxxxxxxxxxxxxxxxxxxx restricted
iface ath0-uni inet dhcp
wireless_essid infvpn
wireless_key off
Das script:
Code: Alles auswählen
#!/bin/sh
iface="$1"
if [ "$iface = ''" ]; then iface="ath0"; fi
[ -f /etc/network/scheme ] || exit 1
scheme=$(cat /etc/network/scheme)
echo $iface-$scheme
exit 0
Als Parameter kannst du den device übergeben, wenn kein Device übergeben wurde wird der Device genommen der in der Datei angegeben ist, hier ath0.
Ich hoffe das war jetzt einigermaßen verständlich.
Probier es einfach mal aus und wenn etwas nicht ganz klappt, dann melde dich wieder.
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support
Ich spreche von Freier Software!
Ich spreche von Freier Software!
Ja, dankeschön, so hab ich das verstanden, werds heut abend mal ausprobieren, hab mein Notebook nicht hier.
Is das dann auch der ort um mir ein "route add default gw...." zu sparen?
Code: Alles auswählen
iface ath0-uni inet dhcp
wireless_essid infvpn
wireless_key off
gateway 192.168.115.1
Is das dann auch der ort um mir ein "route add default gw...." zu sparen?
Also falls es noch wen interessiert: Ich hab das jetzt mit guessnet gelöst, welches anhand der gefundenen essid auswählt. Für Debian muss man folgendes beachten: http://wiki.clug.org.za/index.php/Wireless_Roaming
Take a look here!