Wie kann ich dies in Bash tun, wenn ich die IP-Adresse anzeigen möchte, die eth1 zugewiesen ist?
10
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.
ifconfig bge0 | grep 'inet' | cut -d' ' -f2
funktioniert (ersetzen Siebge0
natürlich Ihren entsprechenden Schnittstellennamen anstelle von )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:
quelle
ifconfig
hat den Vorteil, auf Systemen zu existieren, die nicht Linux sind ...Auf einem Linux-System:
gibt Ihnen nur die IP-Adresse.
Verwenden Sie auf einem Solaris-System:
quelle
Avoid using this option; use hostname --all-ip-addresses instead.
Vielleicht hilft das
quelle
Wie @Manuel erwähnte,
ifconfig
ist es veraltet undip
der 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}'
quelle
Ein Liner mit sed:
Ersetzen Sie wlan0 durch die gewünschte Schnittstelle.
quelle
Ich habe die akzeptierte Antwort unter CentOS 7 ausprobiert , aber sie funktioniert nicht.
hat für mich gearbeitet, falls jemand anderes auf das gleiche Problem stößt.
quelle
ifconfig
sollte vermieden werden. Es ist tatsächlich in einigen neueren Distributionen entfernt. Dies ist wahrscheinlich der Grund, warum Ihre Antwort abgelehnt wurde.