Wie kann ich die IP-Adresse einer Schnittstelle anzeigen?

10

Wie kann ich dies in Bash tun, wenn ich die IP-Adresse anzeigen möchte, die eth1 zugewiesen ist?

user47556
quelle

Antworten:

15

Versuchen Sie dies (Linux)

/sbin/ifconfig eth1 | grep 'inet addr:' | cut -d: -f2| cut -d' ' -f1

oder dies (Linux)

/sbin/ifconfig eth0 | awk -F ' *|:' '/inet addr/{print $4}'

oder dies (* BSD)

ifconfig bge0 | grep 'inet' | cut -d' ' -f2

oder dies (Solaris 10)

ifconfig e1000g0 | awk '/inet / {print $6}'

Ändern Sie natürlich den Namen der Schnittstelle so, dass er mit dem übereinstimmt, von dem Sie die Informationen erhalten möchten.

Iain
quelle
2
funktionierte auch ifconfig eth1 | awk -F '* |:' '/ inet addr / {print $ 4}'
user47556
1
Auf * BSD-Systemen ist die ifconfig-Ausgabe etwas anders - ifconfig bge0 | grep 'inet' | cut -d' ' -f2funktioniert (ersetzen Sie bge0natürlich Ihren entsprechenden Schnittstellennamen anstelle von )
voretaq7
ip addr show eth1 | grep inet | awk '{print $ 2;}'
navaho
7

Ein besserer Weg: IP-Adresse vom Befehl "ip" abrufen, da "ifconfig" veraltet ist. Andernfalls tritt ein Problem bei der Verwendung von "ifconfig" auf, da die Ausgabe von ifconfig sprachabhängig ist.

Ich benutze diesen Befehl, um alle IPs (IPv4) zu erhalten:

ip addr show | grep -o "inet [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" | grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"
Manuel
quelle
1
ifconfighat den Vorteil, auf Systemen zu existieren, die nicht Linux sind ...
voretaq7
3

Auf einem Linux-System:

hostname --all-ip-addresses

gibt Ihnen nur die IP-Adresse.

Verwenden Sie auf einem Solaris-System:

ifconfig e1000g0 | awk '/inet / {print $2}'
Jason H.
quelle
1
Von der Avoid using this option; use hostname --all-ip-addresses instead.
Manpage
1

Vielleicht hilft das

ifconfig eth1
Marco Schmid
quelle
1

Wie @Manuel erwähnte, ifconfigist es veraltet und ipder empfohlene Ansatz für die Zukunft .

ip -f inet addr show eth1

und @ bleater's sed oder @Jason H.'s awk zu verwenden, um die Ausgabe zu filtern (je nachdem, ob Sie die Maske wollen)

ip -f inet addr show eth1 | sed -En -e 's/.*inet ([0-9.]+).*/\1/p'

ip -f inet addr show eth1 | awk '/inet / {print $2}'

pstanton
quelle
0

Ein Liner mit sed:

ifconfig wlan0 | sed -En -e 's/.*inet ([0-9.]+).*/\1/p'

Ersetzen Sie wlan0 durch die gewünschte Schnittstelle.

Bleater
quelle
-1

Ich habe die akzeptierte Antwort unter CentOS 7 ausprobiert , aber sie funktioniert nicht.

/sbin/ifconfig eth0 | grep 'inet ' | tr -s ' ' | cut -d" " -f3

hat für mich gearbeitet, falls jemand anderes auf das gleiche Problem stößt.

Grid_LTS
quelle
1
Wie von @Manuel und @pstanton erwähnt, ifconfigsollte vermieden werden. Es ist tatsächlich in einigen neueren Distributionen entfernt. Dies ist wahrscheinlich der Grund, warum Ihre Antwort abgelehnt wurde.
Serverfehler