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

Wie löst man einen Hostnamen in eine IP-Adresse in einem Bash-Skript auf?

Was ist der kürzeste Weg, um einen Hostnamen in einer IP-Adresse in einem Bash-Skript aufzulösen? Ich verwende Arch Linux.

Akzeptierte Antwort:

Sie können getent verwenden , das mit glibc geliefert wird (Sie haben es also mit ziemlicher Sicherheit unter Linux). Dies wird mit gethostbyaddr/gethostbyname2 aufgelöst und überprüft daher auch /etc/hosts /NIS/etc:

getent hosts unix.stackexchange.com | awk '{ print $1 }'

Oder, wie Heinzi unten sagte, Sie können dig verwenden mit dem +short Argument (fragt DNS-Server direkt ab, schaut nicht auf /etc/hosts /NSS/etc) :

dig +short unix.stackexchange.com

Wenn dig +short nicht verfügbar ist, sollte eine der folgenden Methoden funktionieren. All diese fragen DNS direkt ab und ignorieren andere Auflösungsmethoden:

host unix.stackexchange.com | awk '/has address/ { print $4 }'
nslookup unix.stackexchange.com | awk '/^Address: / { print $2 }'
dig unix.stackexchange.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 }'

Wenn Sie nur eine IP drucken möchten, dann fügen Sie den exit hinzu Befehl an awk Arbeitsablauf.

dig +short unix.stackexchange.com | awk '{ print ; exit }'
getent hosts unix.stackexchange.com | awk '{ print $1 ; exit }'
host unix.stackexchange.com | awk '/has address/ { print $4 ; exit }'
nslookup unix.stackexchange.com | awk '/^Address: / { print $2 ; exit }'
dig unix.stackexchange.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 ; exit }'

Linux
  1. Wie debuggt man ein Bash-Skript?

  2. Wie füge ich einen Unix/Linux-Benutzer in einem Bash-Skript hinzu?

  3. Wie rufe ich eine Bash-Funktion in einem Bash-Skript in Awk auf?

  4. So teilen Sie eine Zeichenfolge in Bash-Skript auf

  5. Bash-Skript - So lesen Sie Benutzereingaben

So führen Sie ein Bash-Skript aus {7 Methoden}

So schreiben Sie ein Bash-Skript mit Beispielen

So konfigurieren Sie eine statische IP-Adresse in Linux und Unix

So führen Sie ein Bash-Skript aus

Wie werden Parameter eingestellt, wenn Bash-Skript an Bash übergeben wird?

Wie überprüfe ich die Syntax eines Bash-Skripts, ohne es auszuführen?