答案1
您可以使用标准系统调用来实现这一点。以下是 Perl 中的一个示例:
use strict; use warnings;
use Socket;
use Data::Dumper;
my @addresses = gethostbyname('google.com');
my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses];
print Dumper(\@ips);
产生输出:
$VAR1 = [
'74.125.127.104',
'74.125.127.103',
'74.125.127.105',
'74.125.127.106',
'74.125.127.147',
'74.125.127.99'
];
(在命令行上,相同的脚本可以写成perl -MSocket -MData::Dumper -wle'my @addresses = gethostbyname("google.com"); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print Dumper(\@ips)'
:)
您可以用其他语言执行类似的操作——请参阅系统调用的手册页man -s3 gethostbyname
等。
答案2
host <hostname>
前任:
serv ~ $ host stackoverflow.com
stackoverflow.com has address 69.59.196.211
编辑
在 Linux 上(以及至少某些 OS X 版本),你也许能够使用resolveip
,它是 MySQL 服务器包的一部分:
/etc/hosts:
...
127.0.0.1 localhost localhost.localdomain foo
...
serv ~ $ resolveip foo
IP address of foo is 127.0.0.1
答案3
这篇古老的帖子似乎有很多创造性的解决方案。
如果我需要确保也/etc/hosts
能被访问,我倾向于使用
getent hosts somehost.com
这是可行的,至少如果“/etc/nsswitch.conf”已配置为使用文件(通常都是这样)。
答案4
为什么不dig +short hostname
?
(查询 DNS)