host
,dig
并可nslookup
用于从命令行查找 DNS 名称。但是,它们直接从 DNS 服务器查询名称,而不是使用nsswitch
解析主机名。这意味着不使用 /etc/hosts 和 mDNS。
是否有一个命令行工具可以通过标准方式查找名称(尊重 mDNS 和 /etc/hosts)?
有一个Ask DIfferent 上的类似问题,但它似乎特定于 OS X。
答案1
您可以用来getent
查询包括主机在内的各种数据库。
$ getent hosts <hostname>
如果您的服务器有 V6 地址,但您想要 V4 地址,则可能需要使用 ahostsv4 DB。
$ getent ahostsv4 www.google.com
作为附加工具,您可以尝试调用gethostbyname()
程序。 C 就可以了,但这里有一个 perl 脚本:
#!/usr/bin/perl
use strict;
use warnings;
use Socket;
my $ip = gethostbyname($ARGV[0]);
if (defined $ip) {
my $ip_addr = inet_ntoa($ip);
print "$ip_addr\n";
}
如果命令行上的主机只有一个IP,则会在下面打印。