Wie kann ich die Ausgabe erhalten und den Befehl dig testen?

7

Wenn wir den Befehl "dig + short www.example.com" eingeben, erhalten wir ungefähr Folgendes:

www.example.com.
192.168.1.1
192.168.1.2
192.168.1.3

Ich möchte die erste Adresse erhalten und testen, ob es das ist, was ich möchte (192.168.1.1).

Wie kann ich die Ausgabe dieses Befehls, insbesondere der zweiten Zeile, mithilfe eines Shell-Skripts abrufen?

Nidal
quelle

Antworten:

7

So etwas reicht aus:

$ dig +short www.google.com | head -1
74.125.225.113

Seien Sie jedoch vorsichtig, da die meisten Server mit mehreren IP-Adressen auf DNS-Ebene eine Art Round-Robin-Verfahren ausführen, sodass die Liste normalerweise jedes Mal rotiert, wenn Sie den digBefehl ausführen :

$ dig +short www.google.com
74.125.225.116
74.125.225.112
74.125.225.113
74.125.225.114
74.125.225.115

$ dig +short www.google.com
74.125.225.115
74.125.225.116
74.125.225.112
74.125.225.113
74.125.225.114

$ dig +short www.google.com 
74.125.225.114
74.125.225.115
74.125.225.116
74.125.225.112
74.125.225.113

Beachten Sie, wie sich die IPs von Abfrage zu Abfrage bewegen? Dies geschieht, um die Last auf diese Server zu verteilen.

Erfassen der IP in einer Variablen

Der folgende Befehl erfasst die Ausgabe der IP-Adresse und fügt sie in eine Shell-Variable ein.

$ IP=$(dig +short www.google.com | head -1)

Sie können dies folgendermaßen bestätigen:

$ echo $IP
74.125.225.114
slm
quelle
aber wie kann ich es in eine Variable setzen
Nidal
@ user2683768 - siehe Updates.
slm
3

Bitte schön

dig +short  www.example.com | sed -n '2{p;q}'

-nverhindert, dass sed standardmäßig seine Eingabe druckt. 2bewirkt, dass es in p;qZeile 2 ausgeführt wird. pSteht für print und qfür quit

iruvar
quelle
Könntest du es mir kurz erklären @ 1_CR
Nidal
Dies druckt die letzte Zeile, nein? echo -e "hi1\nhi2"| sed -n '2{p;q}'gibt mir hi2.
slm
@slm danke für die Bearbeitung. Erklärung hinzugefügt.
iruvar
Ich denke, wenn Sie es von einer 2 in eine 1 ändern, erhalten Sie die erste Zeile.
slm
1
Ja, es ist beängstigend, wie viel wir nicht wissen, nicht wahr?
slm