Como reverter com segurança a pesquisa de DNS no ip em um script de shell

4

Eu estou tentando descobrir como pegar um nome de host e colocar um endereço IP (reverse dns lookup).

Eu inventei isso, mas não tenho certeza se é seguro em diferentes distribuições linux:

nslookup $ip|grep "name ="|sed 's/^.*name = //'| sed '$s/\.$//'

Parece estar tudo bem. A chamada para nslookup dá:

$ nslookup 127.0.0.1
Server:     192.154.28.100
Address:    192.154.28.100#53

1.0.0.127.in-addr.arpa  name = localhost.

Então nós fazemos grep para remover as linhas que não fornecem o nome do host. Então usamos o dito para remover tudo antes de "name=" e remover o arquivo. no fim. Se houver mais de uma linha por qualquer razão, então apenas pegamos a primeira. Isso dá 'localhost' Deve haver alguma maneira melhor de fazer isso?

    
por JasonG 03.09.2013 / 22:49

2 respostas

8

nslookup é um pouco desaprovado, em favor do comando dig pelo ISC.

Com dig , você escreveria:

dig -x 127.0.0.1 +short

Como alternativa, você pode fazer:

perl -MSocket -le 'print((gethostbyaddr(inet_aton("127.0.0.1"), AF_INET))[0])'

que usaria o resolvedor do sistema para obter as informações (que por sua vez podem usar /etc/hosts , DNS, NIS +, LDAP ... como por /etc/nsswitch.conf , não apenas DNS como dig ou nslookup )

    
por 04.09.2013 / 00:42
2

Você pode tentar o comando host, que lhe dará uma saída semelhante a:

$ host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.
    
por 03.09.2013 / 23:03