并非特定于 DNS 的域名解析工具

Kri*_*itz 2 dns nsswitch

hostdig并且nslookup可以用来从命令行查找的DNS名称。但是,它们直接从 DNS 服务器查询名称,而不是nsswitch用于解析主机名。这意味着不使用 /etc/hosts 和 mDNS。

是否有命令行工具可以通过标准方式(尊重 mDNS 和 /etc/hosts)查找名称?

Ask DIfferent 上有一个类似的问题,但它似乎特定于 OS X。

Bow*_*Red 6

您可以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";
}
Run Code Online (Sandbox Code Playgroud)

如果命令行上的主机只有一个 IP,则会在下面打印。

  • @Kritzefitz 这正是您要寻找的:它与应用程序使用的解析代码相同,基于 NSS(与特定于 DNS 的 `hosts`、`dig` 和 `nslookup` 不同)。它应该与 mDNS 一起使用。 (2认同)