我正在尝试找出如何获取主机名并弹出 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
有点不推荐使用的命令,有利于dig
ISC 的命令。
使用dig
,你可以这样写:
dig -x 127.0.0.1 +short
或者,你可以这样做:
perl -MSocket -le 'print((gethostbyaddr(inet_aton("127.0.0.1"), AF_INET))[0])'
它将使用系统的解析器来获取信息(依次可能会使用/etc/hosts
DNS、NIS+、LDAP... /etc/nsswitch.conf
,而不仅仅是 DNSdig
或nslookup
将使用)
答案2
您可以尝试使用 host 命令,该命令将为您提供类似于以下内容的输出:
$ host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.