如何在 shell 脚本中安全地反向 ip 上的 dns 查找

如何在 shell 脚本中安全地反向 ip 上的 dns 查找

我正在尝试找出如何获取主机名并弹出 IP 地址(反向 dns 查找)。

我想出了这个,但我不太确定它在不同的 Linux 发行版上是否安全:

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

看来还好。对 nslookup 的调用给出:

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

因此,我们 grep 删除未给出主机名的行。然后我们使用 said 删除“name =”之前的所有内容并删除 .在最后。如果出于某种原因有多于一行,那么我们只取第一行。这给出了 'localhost' 一定有更好的方法来做到这一点?

答案1

nslookup有点不推荐使用的命令,有利于digISC 的命令。

使用dig,你可以这样写:

dig -x 127.0.0.1 +short

或者,你可以这样做:

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

它将使用系统的解析器来获取信息(依次可能会使用/etc/hostsDNS、NIS+、LDAP... /etc/nsswitch.conf,而不仅仅是 DNSdignslookup将使用)

答案2

您可以尝试使用 host 命令,该命令将为您提供类似于以下内容的输出:

$ host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.

相关内容