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?

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.


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]*"

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}'

1
Von der Avoid using this option; use hostname --all-ip-addresses instead.
Manpage


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}'


0

Ein Liner mit sed:

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

Ersetzen Sie wlan0 durch die gewünschte Schnittstelle.


-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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.