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

Jas*_*onG 4 dns shell-script

我试图找出如何接收主机名并弹出一个 ip 地址(反向 dns 查找)。

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

nslookup $ip|grep "name ="|sed 's/^.*name = //'| sed '$s/\.$//'
Run Code Online (Sandbox Code Playgroud)

看起来没问题。对 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.
Run Code Online (Sandbox Code Playgroud)

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

Sté*_*las 8

nslookup有点不推荐使用的命令,支持digISC的命令。

使用dig,你可以这样写:

dig -x 127.0.0.1 +short
Run Code Online (Sandbox Code Playgroud)

或者,你可以这样做:

perl -MSocket -le 'print((gethostbyaddr(inet_aton("127.0.0.1"), AF_INET))[0])'
Run Code Online (Sandbox Code Playgroud)

它将使用系统的解析器为您获取信息(反过来可能会使用/etc/hosts, DNS, NIS+, LDAP... as per /etc/nsswitch.conf,而不仅仅是 DNS as digor nslookupwill)