Re: Recherche d'un outils resolver d'ip a partir du fichier hosts
Joel a écrit :
Bonjour la liste,
Je recherche un outils équivalent de "host" ou "dnslookup" mais qui
interroge le fichier /etc/hosts au lieu du dns ( ou bien qui se base sur
le paramettre order du fichier de conf /etc/host.conf)
En effet dans l'utilisation d'un script ou autre il peut être
interessant de changer l'adresse ip en nom d'hôte pour que l'affichage
soit plus 'humainne".
Merci
tidj
Suite a l'ensemble de vos messages,
Un grep peux effectivement faire l'affaire, mais il faudrait le piper
pour que cela soit propre, genre :
debian$ cat /etc/hosts | sed -e "s/#.*//g" | \
grep $ADDRESSIP | awk '{print $2}
Mais au genialissime getent fait cela tous seul :
Usage: getent [OPTION...] base de données [clé ...]
getent() - obtenir les entrées de la base de données administratives
-s, --service=CONFIG Configuration de service à être utilisée
-?, --help Donner cette liste d'aide
--usage Donner un court message expliquant l'usage
-V, --version Afficher la version du programme
Les arguments obligatoires ou optionnels pour les options de formes longues
le sont aussi pour les options de forme courtes.
Base de données supportées:
ahosts aliases ethers group hosts netgroup networks passwd protocols rpc
services shadow
d'ou
debian$ getent hosts $ADDRESSIP | awk '{print $2}'
Mais l'idéale serait un outils qui respect l'ordre configurer dans
/etc/host.conf (comme nslookup sur HP-UX, a noter que je n'ai pas essayé
avec nslookup, le package tendant à être remplacer par host )
d'ou la petite fonction :
ipsolve () {
ADDRESSIP=$1
for resolvsource in $(cat /etc/host.conf | grep order | sed -e "s/order //g;s/,/ /"); do
case $resolvsource in
hosts)
GETENT=`which getent`
if [ ! -z $GETENT ] && hostresolv=$($GETENT hosts $ADDRESSIP | awk '{print $2}') && [ ! -z $hostresolv ]; then
echo -n $hostresolv
exit 0
fi
;;
bind)
HOSTCMD=`which host`
if [ ! -z $HOSTCMD ] && hostresolv=$($HOSTCMD $ADDRESSIP) && ! echo ${hostresolv} | grep "not found:" &>/dev/null; then
echo -n ${hostresolv##* }
exit 0
fi
;;
esac
done
echo -n $ADDRESSIP
}
Le plus propre serais evidemment de reffaire cela en c avec les
fonctions apropriées (heu comment ca j'ai la flemme), voire mieux de
faire un patch pour host.
Merci a vous
enfin si quequ'un a le petit programme miracle, je suis toujour preneur.
tidj
Reply to: