Re: Recherche d'un outils resolver d'ip a partir du fichier hosts
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
Reply to: