So überwinden Sie Unterschiede im Format von ifconfig Ubuntu16.04 und Ubuntu17.01

So überwinden Sie Unterschiede im Format von ifconfig Ubuntu16.04 und Ubuntu17.01

Hintergrund:

Ich überprüfe die Liste der verfügbaren Schnittstellen unter Linux mit dem Befehl ifconfig.

Es gibt jedoch einen Unterschied im Format der ifconfig-Ausgabe in Ubuntu 16.04 und Ubuntu 17.10.

Bei weiterer Überprüfung wurde das Net-Tools-Paket in Ubuntu 17.10 aktualisiert (von Net-Tools 1.60 auf Net-Tools 2.10-Alpha) und die neueste ifconfig gibt die Netzwerkschnittstellennamen mit einem Doppelpunkt (':') aus. Bei älteren Versionen:

$ ifconfig --version net-tools 1.60 ifconfig 1.42 (13.04.2001)

$ ifconfig

enp0s3 Link encap:Ethernet

Auf der neueren Version

$ ifconfig --version net-tools 2.10-alpha

$ifconfig

ens160: Flags = 4163 mtu 1500

lo: Flaggen = 73 mtu 65536

Dies kann dazu führen, dass einige Tools nicht mehr funktionieren, die den zusätzlichen „:“ in der Ausgabe berücksichtigen oder erwarten.

Frage:

Gibt es eine Möglichkeit, die Liste der Netzwerkschnittstellen zuverlässig abzurufen, sodass sich Änderungen im Format der ifconfig-Ausgabe nicht auf die Tools auswirken, die sie verwenden? Gibt es eine Alternative zu ifconfig, die konsistent verwendet werden kann?

Antwort1

DerNetzwerkzeugePaket warveraltetfür einige Zeit wurde es durch iproute2 ersetzt ( ipdas primäre Tool in diesem Paket). Viele Distributionen liefern Net-Tools nicht einmal mehr als Teil ihrer Basisinstallation mit.

Die Entwicklung von net-tools wurde inzwischen wieder aufgenommen, was jedoch dazu geführt hat, dass eine Reihe von Tools auf eine Art und Weise verbessert wurden, die die Kompatibilität beeinträchtigt, wie Sie bei gesehen haben ifconfig. Von NEWS.Debian.gzeinem Debian 9.0-System:

Nach 15 Jahren ohne Upstream-Entwicklung wird wieder an Net-Tools gearbeitet, wobei viele seit langem bestehende Probleme behoben werden. Die schlechte Nachricht ist, dass sich die Ausgabe vieler Befehle geändert hat und Skripte, die auf deren Analyse angewiesen waren, mit Sicherheit beschädigt werden.

Aus diesem Grund ist es möglicherweise eine gute Idee, Ihre Skripte so anzupassen, dass sie die iproute2-Tools verwenden. Beispielsweise ip linksollte Ihnen ähnliche Informationen wie ifconfigoben angezeigt geben. Der einzige Nachteil dieses Ansatzes besteht darin, dass die Kompatibilität mit Nicht-Linux-Systemen beeinträchtigt wird, die fast alle verwenden ifconfig.

Antwort2

Eine alternative Möglichkeit, alle Schnittstellen in Linux von der Shell aus aufzulisten, ist das Lesen von /proc/net/dev, die ein stabileres Format haben als die Ausgabe von ifconfig(8) von net-tools.

So erhalten Sie beispielsweise die Namen von Schnittstellen:

whr@debianjessie:~$ sed -r -e 1,2d -e 's/^ +//' -e 's/: .+//' /proc/net/dev
ppp0
lo
eth0
eth1

verwandte Informationen