我试图找出如何接收主机名并弹出一个 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' 一定有更好的方法来做到这一点吗?
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)
| 归档时间: |
|
| 查看次数: |
8429 次 |
| 最近记录: |