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.
> 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 > |