60 votes

Utilitaire de ligne de commande Linux pour résoudre les noms d'hôtes en utilisant d'abord /etc/hosts

Il existe plusieurs utilitaires en ligne de commande pour résoudre les noms d'hôtes ( host , dig , nslookup ), mais ils utilisent tous exclusivement des serveurs de noms, alors que les applications en général consultent le site /etc/hosts d'abord (en utilisant gethostbyname je crois).

Existe-t-il un utilitaire en ligne de commande pour résoudre les noms d'hôtes qui se comporte comme une application habituelle, c'est-à-dire qui recherche dans /etc/hosts d'abord et ensuite seulement en demandant un serveur de noms ?

(Je suis conscient que ce serait probablement 3 lignes de c, mais j'en ai besoin à l'intérieur d'un Shell Shell quelque peu portable).

0voto

Sandra Points 1

La commande suivante effectue une recherche via le fichier DNS /etc/hosts plutôt qu'une recherche directe sur le serveur DNS.

ping -W2 -c1 google.com | grep PING | sed -r "s/^[^\(]*\(([\.0-9]*)\).*/\1/"

Cette commande tentera d'envoyer un ping à un domaine (dans ce cas, google.com) une fois avec un délai d'attente de 2 secondes, obtiendra la première ligne de la commande PING qui indiquera "PING google.com (216.58.199.36) 56(84) octets de données", puis utilisera l'éditeur de flux (sed) pour détecter le premier ensemble de crochets et extraire les données qu'il contient, c'est-à-dire l'adresse IP que nous recherchons.

REMARQUE : l'expression de la regex ne fonctionnera pas s'il y a des parenthèses (également appelées crochets circulaires) dans l'URL, mais il s'agit d'un cas rare.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X