Résoudre le script de domaine

Comment le faire fonctionner?


Script 1: (Cela ne fonctionne pas)

host=www.example.com ip=$(getent hosts | grep $host | awk '{ print $1}') echo $ip 

Script 2: (Cela ne fonctionne pas)

 host=www.example.com ip=$(getent hosts $host | awk '{ print $1}') echo $ip 

Script 3: (ça marche, mais j'ai besoin d'utiliser une variable …)

 ip=$(getent hosts www.example.com | awk '{ print $1}') echo $ip 

J'ai besoin de prendre le file hosts approprié IP, en fonction de la variable.


Hôtes: (etc / hosts)

  127.0.0.1 localhost 1.1.1.1 www.example.com 

  1. Ce que vous avez là devrait fonctionner, il n'y a aucune raison pour que cela ne le soit pas. Cela fonctionne certainement sur mon système.

  2. vous n'avez pas besoin du grep . Ce qui suit fonctionnera:

ip=$(getent hosts "$host" | awk '{ print $1}')

Vous confondez les deux jeux de résultats différents qui peuvent être obtenus avec les getent hosts .

  1. getent hosts renvoie un résultat globalement équivalent à cat /etc/hosts
  2. getent hosts TARGET utilisera l'input hosts dans /etc/nsswitch.conf pour searchr une ou plusieurs bases de données hôte pour TARGET , renvoyant la première correspondance trouvée

Le script 1 search l' host uniquement à partir de /etc/hosts . Il peut aussi être légèrement raccourci:

 host=www.example.com ip=$(getent hosts | awk '/'"$host"'/ {print $1; exit}') echo $ip 

Les scripts 2 et 3 vont searchr /etc/hosts et probablement aussi DNS. Ce n'est pas clair pour moi où vous mettez ' ou " pour que votre troisième script ne fonctionne pas.