Dies bezieht sich auf Linux, aber wenn jemand eine allgemeine *nix-Methode kennt, wäre das gut.
Ich habe gestern ein System mit eingestecktem Ethernetkabel gebootet. "NetworkManager" ist nicht installiert, also habe ich nach dem Start mit ifconfig
nach dem Namen der Ethernet-Schnittstelle gesucht, um einen DHCP-Client manuell zu starten, aber es wurde nichts anderes als lo
angezeigt.
Die Netzwerkkarte wurde über lspci
aufgelistet, und der entsprechende Kernel-Treiber wurde geladen. Das System benutzt normalerweise Wifi, und ich konnte mich daran erinnern, dass der Schnittstellenname dafür wlan0
war. Als ich ifconfig wlan0 up
versuchte, erschien wlan0
. Aber die einzigen Ethernet-Schnittstellennamen, an die ich mich erinnern konnte, waren eth[N]
und em[N]
- keine davon funktionierte.
Dieses Dokument bezieht sich auf "vorhersagbare Schnittstellennamen", aber es leistet keine gute Arbeit, um zu erklären, was sie in einfachen Worten sein könnten. Es verweist auf einen Teil des Quellcodes, der andeutet, dass der Name in diesem Fall von der PCI-Bus- und Slotnummer abgeleitet werden könnte, was unnötig kompliziert erscheint.
Andere Recherchen führten mich zu der Annahme, dass dies von systemd
in Verbindung mit udev
bestimmt werden könnte, aber es gibt fast 100 Dateien in /usr/lib/udev/rules.d
und eine Stunde damit zu verbringen, herauszufinden, wo (und ob) es eine systemd-Konfigurationsdatei dafür gibt, erscheint ebenfalls lächerlich.
Es wäre auch schön, mit Sicherheit zu wissen, dass sie verfügbar sind, und nicht nur, wie sie benannt sind, wenn sie es sind, damit ich Hardwareprobleme ausschließen kann usw. **Gibt es nicht eine einfache Möglichkeit, die Namen der verfügbaren Netzwerkschnittstellen unter Linux zu finden?
Die einfachste Methode, die ich kenne, um alle Ihre Schnittstellen aufzulisten, ist
ifconfig -a
EDIT
Wenn Sie sich auf einem System befinden, auf dem diese Funktion nicht mehr verfügbar ist, können Sie
ip link show
Der Kernel listet sie namentlich in /sys
auf, sowohl separat in (z.B.) dem Baum der PCI-Geräte -- obwohl es nicht einfach ist, sie dort zu finden, wenn man nicht weiß, wo sie sind -- als auch zusammen über Symlinks in /sys/class/net
. Z.B.:
> ls /sys/class/net
em1 lo wlp6so
Ein anderes Beispiel:
> ls /sys/class/net
lo p6s1 wlan0
Wenn du dir nicht sicher bist, welches das richtige ist, kannst du sie einfach alle mit "entweder" aufstellen:
ifconfig [name] up
Oder:
ip link set [name] up
Und dann schauen Sie sich die (ziemlich klaren) Hinweise an, die von ifconfig
(ohne Argumente) aufgelistet werden. Der systemd-Quellcode, der vom Freedesktop.org-Dokument verlinkt ist, verweist auch auf:
Two character prefixes based on the type of interface:
* en -- ethernet
* sl -- serial line IP (slip)
* wl -- wlan
* ww -- wwan
Obwohl es in einem der obigen Fälle (p6s1
) kein Präfix gibt.
Ich mache immer cat /proc/net/dev
, das ist einfach und leicht zu merken