WLAN-Netzwerkkarte mal eth0 und mal eth1; wie mit bash herausfinden?
Moin miteinander, ich habe die WLAN-Karte konfiguriert, die LAN-Karte nicht, es existiert somit auch kein ifcfg-ethx, sondern nur ifcfg-wlan-. Trotzdem wird ab und zu die WLAN-Karte als eth1 gestartet, obwohl keine eth0 vorhanden ist. Das Problem an der Sache ist, dass ich ein Skript habe, welches die WLAN-Karte an und aus schalten soll, was bei wechselndem Namen eben ab und zu fehl schlägt. Ich würde also entweder gerne wissen, wieso die Karte mal eth0 und mal eth1 ist, oder noch besser, wie ich mit bash herausfinden kann, welches von beiden zur WLAN-Karte gehört, damit das Skript flexibler wird. Danke! Sven
On Mon, 4 Apr 2005 11:47:07 +0200, Sven Burmeister wrote
Ich würde also entweder gerne wissen, wieso die Karte mal eth0 und mal eth1 ist,
Ko(s)mische Einflüsse?
wie ich mit bash herausfinden kann, welches von beiden zur WLAN-Karte
Per Script etwa so: ------ 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 ------ Ist jetzt nur ein Schnellschuss, aber das Prinzip sollte stimmen. Uli -- "The particular mistake will not be repeated. There are plenty of mistakes left that have not yet been used." --A. Tanenbaum
Hallo! Vielen Dank für das Skript, leider bekomme ich es nicht so recht zum Laufen. Am Montag, 4. April 2005 23:08 schrieb Uli Wachowitz:
for i in $IFACES; do [ "$WLANIFACE == "" ] && \ ifconfig $i 2>/dev/null | \ grep -q $WLANMAC && WLANIFACE="$i" done
Mein Problem ist, dass ich das ganze zwischen do und done nicht verstehe. Ich kenne PHP und ein wenig C++, wohl zu wenig. Könnte mir jemand bitte die einzelnen Abschnitte erklären? Ich habe keine bash Seite gefunden, die mir die Fragen beantworten konnte. [ "$WLANIFACE == "" ] && \ Ist das die Bedingung für die Schleife? ifconfig $i 2>/dev/null | \ ifconfig mit $i wird ausgeführt und der Inhalt wird nach /dev/null geschrieben, bei >2 weiß ich nicht was die 2 bedeutet. grep -q $WLANMAC ist klar. WLANIFACE="$i" Eigentlich auch klar, aber wird es nicht bei jeder Schleife mit $i einfach überschrieben, oder bricht die Schleife vorher ab? Die && kenne ich nur als AND. Ich habe hinter die Schleife mal logger "WLANIFACE $WLANIFACE" gesetzt, was aber immer eine leere Variable ausgibt. Wenn ich die Antworten doch im Internet finden kann, wäre ich für einen entsprechenden Querverweis dankbar. Sven
Hi Swen Ich bin auch nicht der Hirsch, aber ich versuch mich mal.
Am Montag, 4. April 2005 23:08 schrieb Uli Wachowitz:
------ WLANMAC="xx:xx:xx:xx:xx:xx" WLANIFACE=""
IFACES=" eth0 eth1 "
Das sind die im Script verwendeten Variablen. Der Backslash im Folgenden ist die Anweisung die Zeile fortzusetzen. Zwischen 'do' und 'done' ist also alles auf einer Zeile. Die Schleife wird zweimal durchlaufen, mit den Einträgen 'eth0' und 'eth1' in der Variable $i.
for i in $IFACES; do [ "$WLANIFACE == "" ] && \
Falls $WLANIFACE leer ist (der Test [ "$WLANIFACE == "" ] ist wahr) wird der Rest abgearbeitet.
ifconfig $i 2>/dev/null | \
Eventuelle Fehler werden fortgeworfen (2>/dev/null, 2 = stderr, im Gegesatz zu 1 oder nichts = stdout, die normale Ausgabe). Also die normale Ausgabe des Befehls 'ifconfig' mit den Interfaces als Argument werden nach dem Befehl 'grep' gepipt.
grep -q $WLANMAC && WLANIFACE="$i"
Falls der Returnwert von grep wahr ist (grep hat den Inhalt von $WLANMAC gefunden) wird die Variable $WLANIFACE mit "$i" gefüllt (das Gegenteil wäre '||', also bei unwahrem Returnwert).
done
[ "$WLANIFACE == "" ] && \ Ist das die Bedingung für die Schleife?
Die Schleife hat keine Abbruchbedingung. Sie läuft durch alle Einträge in $IFACES.
Wenn ich die Antworten doch im Internet finden kann, wäre ich für einen entsprechenden Querverweis dankbar.
'man bash' auf der Konsole. http://www.linux-ag.de/linux/LHB/node26.html#SECTION00440000000000000000 http://www.tu-chemnitz.de/urz/kurse/unterlagen/shell-progr/bourne/bourne.htm... http://en.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html http://tldp.org/LDP/abs/html/ Man möge mich korrigieren Gruss Jürg
Hallo! Am Mittwoch, 6. April 2005 08:23 schrieb Juerg Schneider:
Das sind die im Script verwendeten Variablen. Der Backslash im Folgenden ist die Anweisung die Zeile fortzusetzen. Zwischen 'do' und 'done' ist also alles auf einer Zeile. Die Schleife wird zweimal durchlaufen, mit den Einträgen 'eth0' und 'eth1' in der Variable $i.
Das habe ich mir schon gedacht, aber jetzt weiß ich es.
ifconfig $i 2>/dev/null | \
Eventuelle Fehler werden fortgeworfen (2>/dev/null, 2 = stderr, im Gegesatz zu 1 oder nichts = stdout, die normale Ausgabe). Also die normale Ausgabe des Befehls 'ifconfig' mit den Interfaces als Argument werden nach dem Befehl 'grep' gepipt.
Das ist auch sehr hilfreich, jetzt verstehe ich die 2 und 1 endlich.
grep -q $WLANMAC && WLANIFACE="$i"
Falls der Returnwert von grep wahr ist (grep hat den Inhalt von $WLANMAC gefunden) wird die Variable $WLANIFACE mit "$i" gefüllt (das Gegenteil wäre '||', also bei unwahrem Returnwert).
Das hat mich wohl am meisten irritiert, && heißt ja sonst und, hier aber wenn-wahr, || normalerweise oder, hier aber wenn-falsch, wieder was gelernt.
http://www.linux-ag.de/linux/LHB/node26.html#SECTION00440000000000000000 http://www.tu-chemnitz.de/urz/kurse/unterlagen/shell-progr/bourne/bourne.ht ml http://en.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html http://tldp.org/LDP/abs/html/
Vielen Dank, die werde ich mir nochmal zu Gemüte führen, damit ich mehr verstehe und das Skript vielleicht nochein bisschen ausbauen. Sven
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.
for i in $IFACES; do ... done Man hätte in diesem Fall der Einfachheit halber auf eine Schleife verzichten können, indem man eth0 prüft und in Abhängigkeit vom Ergebnis eth0 oder eth1 setzt, also z.B. (ungetestet):
# Ergebnisvariable vorbesetzen IF=eth1 #Ergebnis von ifconfig auf Teilstring der HW-Addr prüfen und #ggf Ergebnisvariable umsetzen ifconfig eth0 2>/dev/null | grep -q AF:FE && IF=eth0 Natürlich ist das nicht so komfortabel und flexibel, aber: Keep Things Simple! -- Eckhard Rüggeberg E.Rueggeberg@t-online.de "One OS to rule them all, One OS to find them, One OS to bring them all and in the darkness bind them In the Land of Redmond, where the Shadows lie."
On Wed, 6 Apr 2005 10:19:32 +0200, Eckhard Rüggeberg wrote
Man hätte in diesem Fall der Einfachheit halber auf eine Schleife
hätte man durchaus
Keep Things Simple!
Radio Eriwan: Im Prinzip ja Aber wie gesagt, das war ursprünglich nur ein ungetesteter Schnellschuss. Bei mir kommt immer zuerst die Funktion, danach die Form (und damit auch oftmals die Vereinfachung). Uli -- "The original point and click interface was a Smith & Wesson."
Moin! Am Mittwoch, 6. April 2005 09:34 schrieb Uli Wachowitz:
Sorry, du hattest was von Script geschrieben, daher nahm ich an... egal.
Ich habe kaum Ahnung, kann Variablen setzen, echo, logger benutzen, if fi und then kenne ich, aber ansonsten sieht es mit bash mau aus. :( Mein Skript bis jetzt war einfach Taste abfangen und dann mit if then ifup bzw. ifdown die WLAN-Karte gestartet/-stoppt, die module geladen/entfernt, mehr war da nicht.
Nun mal mit Kommentaren: ------ # # 1.) Die MAC Adresse deiner WLAN Karte # WLANMAC="xx:xx:xx:xx:xx:xx"
Das kannte ich noch ;)
# 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. #
Gut, das mit der Abbruchbedingung hatte ich zwar erahnt, aber nicht verstanden.
# # 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
Bedeutung von && und || ist mir jetzt auch klar, danke. Bisher kannte ich es nur in Bedingungen und nicht als Kette von Kommandos. Das mit dem Backslash habe ich schonmal mitbekommen, zumindest war da noch was im Hinterkopf.
# # 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 | \
Das habe ich mit set -xv gesehen, das mit dem 2> habe ich auch erklärt bekommen.
# # 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 '[]'.
Das fehlende " hinter $WLANIFACE hatte ich schon gefunden und korrigiert.
--------------- #!/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 ----------------
Dann setze ich das jetzt nochmal ein, vielen Dank für die Erklärungen, damit werde ich dann auch für das anschalten der Karte iwconfig auslesen können, auch wenn da leider keine MAC Adresse angegeben wird, aber das geht schon. Falls es interessiert, das Skript ist für ein Samsung P35 und den WLAN-Knopf, wenn ich es zufriedenstellend am Laufen habe melde ich mich wieder. Danke nochmals! Sven
Moin nochmals! Am Mittwoch, 6. April 2005 09:34 schrieb Uli Wachowitz:
for i in $IFACES; do [ "$WLANIFACE" == "" ] && \ ifconfig $i 2>/dev/null | \ grep -q $WLANMAC && WLANIFACE="$i" done
So, ich habe meinen Fehler gefunden, hatte, da das Skript ja als root läuft, den PATH auf /usr/bin eingeschränkt, womit ifconfig nicht gefunden wird. Mein nächstes Problem ist, wie ich den Interface-Namen aus iwconfig bekomme, wenn es nicht eingebunden ist. /usr/sbin/iwconfig | grep -q $i || WLANIFACE="$i" funktioniert zwar, allerdings wird dann beim nächsten Schleifendurchlauf WLANIFACE auf eth1 gesetzt, da [ "$WLANIFACE" == "" ] ja auch falsch ist. Ich schaue mal auf den bash Seiten nach einem break; o.ä. Gibt es vielleicht auch einen besseren Weg rauszufinden, welche ethx ich zum anschalten nehmen muss? iwconfig, wenn die Karte nicht aktiv ist, gibt eth0 garnicht aus deswegen der obige Ansatz. Ich denke da muss ich dann zu einer if fi greifen. Sven
Hallo Liste, ich habe ein FSC Lifebook S4572 erfolgreich mit SuSE 9.3 und Aktivierung der ACPI-Funktionen in Betrieb genommen. Suspend to Disk funktioniert problemlos. Alle Devices sind soweit ich das überprüfen konnte, nach dem Resume wieder verfügbar und funktional. Nach einem Suspend to RAM ist die Situation ähnlich erfreulich. Lediglich die Netzwerkverbindung wird in wiederhergestellt. Wenn ich das Modul e100 vor dem Suspend entladen lasse um es beim Resume wieder laden zu lassen, findet sich in /var/log/messages u.a. die Meldung 'e100: 0000:0000:0.12:0: e100_eeprom_load: EEPROM corrupted' Nach einem normalen Reboot ist wieder alles wie gewohnt verfügbar. Gibt es eine Möglichkeit, powersave dazu zu überreden, das Netzwerkdevice bei Suspend to RAM ähnlich zu behandeln wie bei Suspend to Disk? Wo muss ich da ggf. welche Eintragungen machen? bin dankbar für jeden Tip. Reiner Pietrzak
Hallo Liste, ich habe ein FSC Lifebook S4572 erfolgreich mit SuSE 9.3 und Aktivierung der ACPI-Funktionen in Betrieb genommen. Suspend to Disk funktioniert problemlos. Alle Devices sind soweit ich das überprüfen konnte, nach dem Resume wieder verfügbar und funktional. Nach einem Suspend to RAM ist die Situation ähnlich erfreulich. Lediglich die Netzwerkverbindung wird nicht wiederhergestellt. eth0 ist noch vorhanden und die vorher zugeordnete IP-Adresse bleiben erhalten. Beim Zugriffsversuch auf das Netzwerk kommt es zu timeouts (/var/log/messages). Fahre ich das Notebook nach so einem Resume normal runter, hängt es beim Kill des network Prozesses. Ich muß das Notebook hart ausschalten. Wenn ich das Modul e100 vor dem Suspend entladen lasse, um es beim Resume wieder laden zu lassen, findet sich in /var/log/messages u.a. die Meldung 'e100: 0000:0000:0.12:0: e100_eeprom_load: EEPROM corrupted' In diesem Fall läßt sich das Notebook normal runterfahren. Nach einem normalen Reboot ist wieder alles wie gewohnt verfügbar. Gibt es eine Möglichkeit, powersave dazu zu überreden, das Netzwerkdevice bei Suspend to RAM ähnlich zu behandeln wie bei Suspend to Disk? Wo muss ich da ggf. welche Eintragungen machen? bin dankbar für jeden Tip. Reiner Pietrzak
On Mon, Apr 04, 2005 at 11:47:07AM +0200, Sven Burmeister wrote:
Ich würde also entweder gerne wissen, wieso die Karte mal eth0 und mal eth1
je nachdem, welches Modul zuerst geladen wird
ist, oder noch besser, wie ich mit bash herausfinden kann, welches von beiden zur WLAN-Karte gehört, damit das Skript flexibler wird.
strolchi:~ # l /etc/sysconfig/network/ifcfg-eth-id-00\:0f\:1f\:a8\:ad\:5f -rw-r--r-- 1 root root 207 Apr 5 21:10 /etc/sysconfig/network/ifcfg-eth-id-00:0f:1f:a8:ad:5f strolchi:~ # getcfg-interface id-00:0f:1f:a8:ad:5f eth0 -- Stefan Seyfried
Am Montag, 4. April 2005 11:47 schrieb Sven Burmeister:
ich habe die WLAN-Karte konfiguriert, die LAN-Karte nicht, es existiert somit auch kein ifcfg-ethx, sondern nur ifcfg-wlan-. Trotzdem wird ab und zu die WLAN-Karte als eth1 gestartet, obwohl keine eth0 vorhanden ist. Das Problem an der Sache ist, dass ich ein Skript habe, welches die WLAN-Karte an und aus schalten soll, was bei wechselndem Namen eben ab und zu fehl schlägt.
Wieso vergibst Du dann keinen fixen Namen? Wie, steht im Handbuch, Stichwort PERSISTENT_NAME. -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de
HI! Manfred Tremmel wrote:
ich habe die WLAN-Karte konfiguriert, die LAN-Karte nicht, es existiert somit auch kein ifcfg-ethx, sondern nur ifcfg-wlan-. Trotzdem wird ab und zu die WLAN-Karte als eth1 gestartet, obwohl keine eth0 vorhanden ist. Das Problem an der Sache ist, dass ich ein Skript habe, welches die WLAN-Karte an und aus schalten soll, was bei wechselndem Namen eben ab und zu fehl schlägt.
Wieso vergibst Du dann keinen fixen Namen? Wie, steht im Handbuch, Stichwort PERSISTENT_NAME.
In die ifcfg-xxx, richtig? Das funktioniert bei mir auch nicht immer. Thomas
Am Donnerstag, 7. April 2005 12:51 schrieb Thomas Börkel:
Manfred Tremmel wrote:
Wieso vergibst Du dann keinen fixen Namen? Wie, steht im Handbuch, Stichwort PERSISTENT_NAME.
In die ifcfg-xxx, richtig? Das funktioniert bei mir auch nicht immer.
Richtig, Du darfst dabei aber kein eth* verwenden, nimm nen anderen Namen (bei mir hab ich ethernet0 und wlan0 verwendet) und es sollte gehen. -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de
HI! Manfred Tremmel wrote:
Wieso vergibst Du dann keinen fixen Namen? Wie, steht im Handbuch, Stichwort PERSISTENT_NAME.
In die ifcfg-xxx, richtig? Das funktioniert bei mir auch nicht immer.
Richtig, Du darfst dabei aber kein eth* verwenden, nimm nen anderen Namen (bei mir hab ich ethernet0 und wlan0 verwendet) und es sollte gehen.
Hmm, aber die eth-Hex Namen vergibt doch Suse automatisch. Ich habe höchstens mal geschafft, eth-wlan0 zu haben, aber ganz ohne "eth-" am Anfang? Geht das nur ohne YaST? Thomas
On Fri, Apr 08, Thomas Börkel wrote:
Hmm, aber die eth-Hex Namen vergibt doch Suse automatisch. Ich habe höchstens mal geschafft, eth-wlan0 zu haben, aber ganz ohne "eth-" am Anfang? Geht das nur ohne YaST?
Ja und ja. Die Namen sind beliebig (nicht zu lang). Du kannst die Interfaces auch Fritz und Heinz nennen. YaST unterstützt das nicht. -- ciao, christian 睡眠不足はいい仕事の敵だ。
Am Freitag, 8. April 2005 08:15 schrieb Thomas Börkel:
Hmm, aber die eth-Hex Namen vergibt doch Suse automatisch. Ich habe
Richtig, nur wie Du bereits festgestellt hast, eben nicht immer die selben für die selben Karten. Hatte das mit 9.2 am Notebook auch, anfangs hab ich eth0 und eth1 PERSISTENT_NAME gesetzt, ging auch ne Zeitlang. Wie ich auf der suse-beta-e Mailingliste erfahren habe, wurden die eth*s offiziell nie von dem Verfahren unterstütz wurde und es quasi Zufall war, dass es unter 9.2 ging (möglich, dass es nicht in jeder Konstellation funktioniert). Unter 9.3 hat es bei mir dann mit eth* auch bei mir nicht mehr geklappt.
höchstens mal geschafft, eth-wlan0 zu haben, aber ganz ohne "eth-" am Anfang? Geht das nur ohne YaST?
Ich habs mit vi gemacht, ne Einstellung in YaST hab ich dazu nicht gefunden. -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de
HI! Manfred Tremmel wrote:
höchstens mal geschafft, eth-wlan0 zu haben, aber ganz ohne "eth-" am Anfang? Geht das nur ohne YaST?
Ich habs mit vi gemacht, ne Einstellung in YaST hab ich dazu nicht gefunden.
In welcher Datei? Thomas
On Thu, Apr 07, Manfred Tremmel wrote:
Am Donnerstag, 7. April 2005 12:51 schrieb Thomas Börkel:
Manfred Tremmel wrote:
Wieso vergibst Du dann keinen fixen Namen? Wie, steht im Handbuch, Stichwort PERSISTENT_NAME.
In die ifcfg-xxx, richtig? Das funktioniert bei mir auch nicht immer.
Richtig, Du darfst dabei aber kein eth* verwenden, nimm nen anderen Namen (bei mir hab ich ethernet0 und wlan0 verwendet) und es sollte gehen.
Wenn es aus welchen Gründen auch immer eth* sein muss, dann geht natürlich auch eth<N>, mit N >= [Anzahl der Interfaces], also bei zwei Interfaces eth2 und eth3. Allerdings kann Thomas dennoch recht haben. Auf manchen Geräten treten Race-Conditions auf, wegen derer der persistente Namen nicht gesetzt werden kann. Das lässt sich jedoch mit einem sleep <n> am Anfang von /etc/init.d/network vermeiden. Wie gross <n> sein muss, hängt vom Gerät ab. Ich würde mit 1 anfangen und es dann soweit erhöhen, bis es zuverlässig klappt. Die bessere Lösung ist es in diesem Fall aber, die Interfacenamen von udev setzten zu lassen. Wie die Regel in /etc/udev/*rules* aussehen muss, steht in 'man udev'. Wer das macht, kann dann auch einfach ifcfg-<interfacename> als Namen für die Konfigurationsdatei verwenden. Aber auch hier gilt: Nicht eth0, eth1, ..., eth<N> (die Namen, die der Kernel wählt) verwenden! Ansonsten hilft immer das, was Stefan schrieb: getcfg-interface id-<MAC Adresse> liefert den aktuell richtigen Namen. Und last but not least: Wer eine der beiden vorhandenen Netzwerkkarten garnicht verwenden möchte, kann dies durch setzen von STARTMODE=manual in /etc/sysconfig/hardware/hwcfg-bus-pci-<pci slot> erreichen. (Z.b. hwcfg-bus-pci-0000:02:01.0). Siehe 'man getcfg'. Wenn die Karte nicht initialisiert wird, wird für sie auch kein Netzwerkinterface registiriert. -- ciao, christian 睡眠不足はいい仕事の敵だ。
participants (9)
-
Christian Zoz
-
Dr. Reiner Pietrzak
-
Eckhard Rüggeberg
-
Juerg Schneider
-
Manfred Tremmel
-
Stefan Seyfried
-
Sven Burmeister
-
Thomas Börkel
-
Uli Wachowitz