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
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.
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
.
getent hosts
renvoie un résultat globalement équivalent à cat /etc/hosts
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.