Wie erfasse ich die erste IP-Adresse, die vom ifconfig
Befehl kommt?
ifconfig -a
enw178032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 100.14.22.12 netmask 255.255.0.0 broadcast 100.14.255.255
inet6 fe80::250:56ff:fe9c:158a prefixlen 64 scopeid 0x20<link>
ether 00:10:56:9c:65:8a txqueuelen 1000 (Ethernet)
RX packets 26846250 bytes 12068811576 (11.2 GiB)
RX errors 0 dropped 58671 overruns 0 frame 0
TX packets 3368855 bytes 1139160934 (1.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Erwartetes Ergebnis:
IP=100.14.22.12
Antworten:
Es ist besser, die Verwendung
ifconfig
zum Abrufen einer IP-Adresse in einem Skript zu vermeiden, da diese in einigen Distributionen veraltet ist (z. B. CentOS und andere, installieren Sie sie nicht mehr standardmäßig).In anderen Systemen variiert die Ausgabe von ifconfig je nach Version der Distribution (z. B. unterscheidet sich die Ausgabe / der Abstand / die Felder von beispielsweise
ifconfig
von Debian 8 bis Debian 9).Um die IP-Adresse mit zu erhalten
ip
, fragen Sie auf ähnliche Weise:Oder noch besser:
Oder wenn Sie nach "IP =" fragen
Die Idee von @Roman schamlos anpassen
Normale Ausgabe:
Von
man ip
:Sehen Sie sich ein Beispiel an, warum dies
ifconfig
nicht empfohlen wird: BBB: `bbb-conf --check` zeigt IP-Adressen als` inet` - ifconfig anInformationen zum Grund
ifconfig
für den Weg nach draußen finden Sie unter Unterschied zwischen den Befehlen 'ifconfig' und 'ip'quelle
awk
. Zu viel Brainpower für mich, immer noch wach. Vermeiden Sieifconfig
, es hat keine Zukunft, und die Position der IP-Adresse ändert sich, es gibt mindestens zwei verschiedene Versionen / Implementierungen (?) Für Linux da draußen, die ich kenne.-brief
Parameter annehmen und seine Ausgabe wird einfacher zu analysieren (2015-08-31: git.kernel.org/pub/scm/network/iproute2) /iproute2.git/commit/… )-o
was für SkripteAwk
Lösung:Beispielausgabe:
quelle
quelle
ip addr | awk ' !/127.0.0.1/ && /inet/ { gsub(/\/.*/, "", $2); print "IP="$2 } '