GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erfasse ich die erste IP-Adresse von einem ifconfig-Befehl?

Es ist besser, ifconfig zu vermeiden zum Abrufen einer IP-Adresse in einem Skript, da es in einigen Distributionen veraltet ist (z. B. CentOS und andere, installieren Sie es nicht mehr standardmäßig).

In anderen Systemen variiert die Ausgabe von ifconfig je nach Version der Distribution (z. B. die Ausgabe/Abstände/Felder von ifconfig unterscheidet sich beispielsweise von Debian 8 zu Debian 9).

Zum Abrufen der IP-Adresse mit ip , auf ähnliche Weise fragen Sie:

ip addr | awk ' !/127.0.0.1/ && /inet/ { gsub(/\/.*/, "", $2); print "IP="$2 } '

Oder noch besser:

$ ip -o -4  address show  | awk ' NR==2 { gsub(/\/.*/, "", $4); print $4 } '
192.168.1.249

Oder, wie Sie fragen, "IP="

#!/bin/bash
echo -n "IP="
ip -o -4  address show  | awk ' NR==2 { gsub(/\/.*/, "", $4); print $4 } '

Schamlose Adaption der Idee von @Roman

$ ip -o -4  address show  | awk ' NR==2 { gsub(/\/.*/, "", $4); print "IP="$4 } ' 
IP=192.168.1.249

Normale Ausgabe:

 $ ip -o -4  address show 
1: lo    inet 127.0.0.1/8 scope host lo\       valid_lft forever preferred_lft forever
2: eth0    inet 192.168.1.249/24 brd 192.168.1.255 scope global eth0\       valid_lft forever preferred_lft forever

Ab man ip :

-o, -oneline
gibt jeden Datensatz in einer einzelnen Zeile aus, wobei Zeilenvorschübe durch das Zeichen '\' ersetzt werden. Dies ist praktisch, wenn Sie Datensätze mit wc(1) zählen oder die Ausgabe mit grep(1) bearbeiten möchten.

Sehen Sie sich ein Beispiel dafür an, warum ifconfig wird nicht empfohlen:BBB:`bbb-conf --check` zeigt IP-Adressen als `inet` an - ifconfig quält

Um zu verstehen, warum ifconfig auf dem Weg nach draußen ist, siehe Unterschied zwischen 'ifconfig'- und 'ip'-Befehlen

ifconfig stammt von net-tools, die schon lange nicht mehr ganz mit dem Linux-Netzwerkstack mithalten können. Es verwendet auch immer noch ioctl für die Netzwerkkonfiguration, was eine hässliche und weniger mächtige Art ist, mit dem Kernel zu interagieren.

Um 2005 herum wurde ein neuer Mechanismus zur Steuerung des Netzwerkstapels eingeführt - Netlink-Sockets.

So konfigurieren Sie die Netzwerkschnittstelle iproute2 verwendet diesen Vollduplex-Netlink-Socket-Mechanismus, während ifconfig stützt sich auf anioctl-Systemaufruf.


Awk Lösung:

ifconfig -a | awk 'NR==2{ sub(/^[^0-9]*/, "", $2); printf "IP=%s\n", $2; exit }'

Beispielausgabe:

IP=10.0.2.15

Linux
  1. Wie kann ich die Zeit von der Befehlszeile aus verfolgen?

  2. Wie erfasst man die Ausgabe eines Top-Befehls in einer Datei unter Linux?

  3. Wie rufe ich eine Wi-Fi-Schnittstelle von einer Befehlszeile aus auf?

  4. Wie erhalte ich meine IP-Adresse über die Befehlszeile?

  5. wie man eine zufällige MAC-Adresse über die Linux-Befehlszeile generiert

So installieren Sie Software über die Linux-Befehlszeile

So suchen Sie Dateien im Terminal unter Linux

So finden Sie die öffentliche IP-Adresse über die Befehlszeile unter Linux heraus

So starten Sie Ubuntu vom Terminal aus neu

Wie führe ich den Vim-Befehl von der Shell aus?

Wie ändere ich schnell das erste Wort in einem Bash-Befehl?