Unix: Como testar o endereço IP é resolvido para nomear

0

Unix: Como testar o endereço IP é resolvido para nomear.

Eu preciso verificar se o endereço IP pode ser resolvido para nomear usando a entrada DNS via shell script.

Código:

DNS_Lookup()
{
        LOOKUP=$(nslookup $1)
        FAIL_COUNT=$(echo $LOOKUP | grep "** server can't find " | wc -l);
        if [ $FAIL_COUNT -eq 1 ];then
            echo "Unable to resolve DNS for $1" 
        else
            echo "IP:$1 DNS Name:$(echo $LOOKUP | grep -v nameserver | cut -f 2 | grep name | cut -f 2 -d "=" | sed 's/ //')" 
            return 0
        fi
} 

DNS_Lookup 192.168.27.191

O código acima não está funcionando em todos os casos possíveis. SO: CentOS

    
por Ram 29.08.2013 / 16:05

2 respostas

2

Você pode usar o comando getent com o parâmetro hosts da seguinte forma:

getent hosts www.google.com

E conte quantos resultados isso recebe:

getent hosts www.google.com | wc -l

getent usa as bibliotecas do Name Service Switch para fazer várias pesquisas de nomes. Com o segundo parâmetro, você pode definir que tipo de banco de dados deseja pesquisar. Verifique man getent para detalhes.

    
por 29.08.2013 / 16:10
0

Mostrando duas abordagens possíveis que são portáteis.

#!/bin/sh

reverseDNS=$(host 8.8.8.8) 
if [ $? != 0 ]; then 
    printf '%s\n' "Reverse DNS [FAILED]"
else
    printf '%s\n' "Reverse DNS [OK]"
fi

###### nslookup ##########

nslookup_func(){

    nslookup=$(nslookup google.com)

    if [ "$nslookup" = ";; connection timed out; no servers could be reached" ]; then
        printf '%s\n' "nslookup [FAILED]"
    else
        printf '%s\n' "nslookup [OK]"
    fi
}

nslookup_func 
    
por 29.08.2013 / 16:48