OVH Cloud OVH Cloud

Recherche d'un outils resolver d'ip a partir du fichier hosts

7 réponses
Avatar
Joel
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


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

7 réponses

Avatar
Thomas Nemeth
Le 05.02.05, Joel a tapoté :

| Bonjour la liste,

Bonjour,


| 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)

Pour interroger /etc/hosts, rien de plus simple : grep.


| Merci

'plaisir.


Thomas
--
Pourquoi pas passer un permis de voter aussi :) ?


Pour que les français votent aussi bien qu'ils conduisent ?
J'ai un doute là ...
-+- GD in Guide du Fmblien Assassin : Bien se conduire. -+-


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Michel Petit
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".





Peut-être getent ?

Cdlt.
--
Michel


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Vincent Bernat
OoO En ce début d'après-midi nuageux du samedi 05 février 2005, vers
14:57, Joel disait:

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".



Tu peux simplement faire un petit programme en C. Regarde la page de
manuel inet(3) pour convertir l'IP en sa représentation machine et
gethostbyaddr() pour faire la résolution via la libc (donc avec
respect du fichier /etc/hosts).
--
BOFH excuse #443:
Zombie processess detected, machine is haunted.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Gilles Mocellin
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".




J'en connais pas, mais c'est "marrant", sous HP-UX, nslookup tient compt
du nsswitch.conf, et regarde le fichier /etc/hosts...

Ça me fait penser à d'autres questions que je me pose, mais CF autre
fil... "Recherche avancée dans DNS"


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Joel
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


--
Pensez
Avatar
Jacques L'helgoualc'h
Joel a écrit, samedi 5 février 2005, à 16:25 :
[...]
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}



On pourrait simplifier, et n'utiliser que sed ou awk ; ce dernier est
plus commode pour choisir un champ :

</etc/hosts awk "$1=~/^$ADDRESSIP$/{print $2}"

(mais ci-dessus $ADDRESSIP est une regexp).

Mais au genialissime getent fait cela tous seul :


[...]
debian$ getent hosts $ADDRESSIP | awk '{print $2}'



"$ADDRESSIP" est préférable

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 () [...]



#!/bin/bash
ipsolve () {

ADDRESSIP="$1"
</etc/host.conf sed -e '
/^[[:space:]]*order[[:space:]]*/!d
s///
s/[[:space:]]*,[[:space:]]*/n/' |
while read resolvsource; do
case "$resolvsource" in
hosts)
GETENT=`which getent`
if [ -n "$GETENT" ] &&
hostresolv=$(
"$GETENT" hosts "$ADDRESSIP" |
awk '{print $2}'
) &&
[ -n "$hostresolv" ];
then
echo -n "$hostresolv "
exit 0
fi
;;
bind)
HOSTCMD=`which host`
if [ -n "$HOSTCMD" ] &&
hostresolv=$("$HOSTCMD" "$ADDRESSIP")
then
case "$hostresolv" in
*"not found"*)
;;
*)
echo -n "${hostresolv##* } "
;;
esac
exit 0
fi
;;
esac
done

echo " $ADDRESSIP"
}

ipsolve "$1"


--
Jacques L'helgoualc'h


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Joel
Jacques L'helgoualc'h a écrit :
Joel a écrit, samedi 5 février 2005, à 16:25 :
[...]

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}




On pourrait simplifier, et n'utiliser que sed ou awk ; ce dernier est
plus commode pour choisir un champ :

</etc/hosts awk "$1=~/^$ADDRESSIP$/{print $2}"

(mais ci-dessus $ADDRESSIP est une regexp).


Mais au genialissime getent fait cela tous seul :



[...]

debian$ getent hosts $ADDRESSIP | awk '{print $2}'




"$ADDRESSIP" est préférable


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 () [...]






#!/bin/bash
ipsolve () {

ADDRESSIP="$1"
</etc/host.conf sed -e '
/^[[:space:]]*order[[:space:]]*/!d
s///
s/[[:space:]]*,[[:space:]]*/n/' |
while read resolvsource; do
case "$resolvsource" in
hosts)
GETENT=`which getent`
if [ -n "$GETENT" ] &&
hostresolv=$(
"$GETENT" hosts "$ADDRESSIP" |
awk '{print $2}'
) &&
[ -n "$hostresolv" ];
then
echo -n "$hostresolv "
exit 0
fi
;;
bind)
HOSTCMD=`which host`
if [ -n "$HOSTCMD" ] &&
hostresolv=$("$HOSTCMD" "$ADDRESSIP")
then
case "$hostresolv" in
*"not found"*)
;;
*)
echo -n "${hostresolv##* } "
;;
esac
exit 0
fi
;;
esac
done

echo " $ADDRESSIP"
}

ipsolve "$1"





Tres sympa :o)

C'était mon premier poste sur la liste et je dois dire que c'est un vrai
plaisir d'y participer...


Donc il ne reste plus qu'a faire un patch en c pour host ;o)


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact