[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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



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)



Reply to: