Mailinglist Archive: opensuse-mobile-de (282 mails)

< Previous Next >
Re: [suse-laptop] WLAN-Netzwerkkarte mal eth0 und mal eth1; wie mit bash herausfinden?
  • From: "Uli Wachowitz" <uli@xxxxxxxxxxxxxx>
  • Date: Wed, 6 Apr 2005 09:34:44 +0200
  • Message-id: <20050406071014.M37801@xxxxxxxxxxxxxx>
On Wed, 6 Apr 2005 00:09:04 +0200, Sven Burmeister wrote

> Mein Problem ist, dass ich das ganze zwischen do und done nicht
> verstehe.

Sorry, du hattest was von Script geschrieben, daher nahm ich an... egal.

Nun mal mit Kommentaren:
------
#
# 1.) Die MAC Adresse deiner WLAN Karte
#
WLANMAC="xx:xx:xx:xx:xx:xx"

#
# 2.) Diese Variable wird leer definiert. Nur zur Sicherheit.
# Ich habe meine Vars gerne in einem definierten Zustand
#
WLANIFACE=""

#
# 3.) Diese VAR enthält die Liste der in Frage kommenden Interfaces
#
IFACES="
eth0
eth1
"

#
# 4.) einfache 'for in do' Schleife. Abbruchbedingung ist der Inhalt
# der Var '$WLANIFACE'. Diese wurde ja oben leer definiert. Solange
# sie leer bleibt, wird die Liste der Interfaces in der Variablen
# '$IFACES' abgearbeitet.
#
for i in $IFACES; do

#
# 5.) Test ob Var '$WLANIFACE' leer ist. Wenn ja '&&' weiter, nächster
# Befehl in der Schleife. Ansonsten Abbruch der Schleife
#
[ "$WLANIFACE" == "" ] && \ # der '\' dient nur dem Zeilenunbruch

#
# Die Ausgabe von 'ifconfig' wird weitergeleitet an den nächsten
# Befehl. Fehlermeldungen, weil etwa das Interface welches gerade
# geprüft wird, nicht existiert, werden nicht angezeigt.
# Beachte: durch die Schleifendefinition 'for i in $IFACES'
# besitzt innerhalb der Schleife die Var '$i' den jeweils aktuellen
# Wert von '$IFACES', also bei jedem Durchlauf EINEN Wert aus
# '$IFACES'. Dadurch wird die dort definierte Liste der Reihe nach
# abgearbeitet.
#
ifconfig $i 2>/dev/null | \

#
# die Ausgabe von 'ifconfig' wird auf das Vorhandensein des Inhaltes
# der Var '$WLANMAC' geprüft. Ist diese Var in der Ausgabe enthalten
# wird die VAR '$$WLANIFACE' auf den aktuellen Wert von '$i' gesetzt
# und enthält so den Namen des WLAN Interfaces. Diese Var '$WLANIFACE'
# kann man nun bequem per Script weiterverarbeiten um so was auch immer
# zu machen.
# Da '$WLANIFACE' nun nicht mehr leer ist, bricht die Schleife beim
# nächsten Durchlauf bei '5.)' ab
grep -q $WLANMAC && WLANIFACE="$i"

#
# Schleifenende
#
done
------

Und hier nochmal am Stück mit Ausgabe per 'echo',
diesmal sogar getestet :-)
In meiner Ersten Version fehlte ein '"' in der Testschleife '[]'.

---------------
#!/bin/bash
WLANMAC="xx:xx:xx:xx:xx:xx"
WLANIFACE=""

IFACES="
eth0
eth1
"

for i in $IFACES; do
[ "$WLANIFACE" == "" ] && \
ifconfig $i 2>/dev/null | \
grep -q $WLANMAC && WLANIFACE="$i"
done

echo $WLANIFACE
----------------

Uli

--
The reboot: useful with linux but not necessary.
Essential with Windows but not really useful.


< Previous Next >