web-dev-qa-db-fra.com

Ligne de commande Nslookup avec une adresse IP enregistrée comme une seule sortie

J'ai trouvé la commande suivante pour obtenir votre adresse publique publique actuelle qui fonctionne bien de la ligne de commande:

nslookup myip.opendns.com resolver1.opendns.com

Je veux pouvoir exécuter une commande si cela imprime simplement l'adresse IP de résilant. (À l'heure actuelle, il affiche le serveur DNS spécifié et il est IP avec toutes les autres informations, c'est-à-dire:

Server:  resolver1.opendns.com
Address:  208.67.222.222

Non-authoritative answer:
Name:    myip.opendns.com
Address:  123.123.123.123

Je veux que cela ne veuille simplement produire: 123.123.123.123

Je ne sais pas si le drapeau de la ligne de commande est d'obtenir ce que je veux ou si je peux utiliser des trucs de ligne de commande pour obtenir uniquement la sortie que je veux (finalement, je souhaite rediriger la sortie dans un fichier "> FileName.txt"

13
BondUniverse

Nslookup avec une adresse IP enregistrée comme une seule sortie

En supposant que vous utilisiez Windows, cela peut être effectué à l'aide d'une commande de ligne simple.

De la ligne de commande:

for /f "skip=4 usebackq tokens=2" %a in (`nslookup myip.opendns.com resolver1.opendns.com`) do echo %a > ip.txt

D'un fichier de lot:

for /f "skip=4 usebackq tokens=2" %%a in (`nslookup myip.opendns.com resolver1.opendns.com`) do echo %%a > ip.txt

Remarques:

  • L'adresse IP publique est stockée dans un fichier (ip.txt).
  • Ce qui précède ne nécessite pas de commandes Windows non standard telles que PowerShell, .Net ou awk.

En plus de lecture

6
DavidPostill

nslookup n'a jamais été vraiment destiné à une utilisation scriptée. Vous voulez vraiment utiliser Dig plutôt, qui avec le +short L'option produit une sortie lisible par la machine en fonction des paramètres de requête.

Dig +short myip.opendns.com @resolver1.opendns.com
23
brm

C'est un bon cas d'utilisation pour Awk.

nslookup myip.opendns.com resolver1.opendns.com | awk -F': ' 'NR==6 { print $2 } '

Nous passons ici à Awk, délimité par ":", puis émettant uniquement le deuxième champ délimité de la ligne 6.

8
JNevill

Fonctionne bien pour moi sur ma machine Linux. Je n'ai jamais essayé sur d'autres systèmes, mais Google a beaucoup d'articles sur l'installation Dig par exemple sur Windows

La seule chose à noter, pour que le domaine de recherche d'hôte local doit être ajouté explicitement. Donc, si vous avez myhost hôte dans votre réseau local avec domaine de recherche mynetwork mettre

Dig +short myhost.mynetwork

sur la ligne de commande.

Exemples:

sergeyi@sergeyi:~$ Dig +short google.ru
173.194.222.94

sergeyi@sergeyi:~$ Dig A +short google.ru
173.194.222.94

sergeyi@sergeyi:~$ Dig AAAA +short google.ru
2a00:1450:4010:c0b::5e
2
Sergey

Simple.

À NSLOOKUP UTILISATION:

Définir TYPE = A

Puis recherche. La commande SET affichera uniquement les sorties pour un enregistrement. Vous pouvez utiliser ceci pour MX, CNAME, AAA, etc.

0
Proxy