小智 13
host <hostname>
前任:
serv ~ $ host stackoverflow.com
stackoverflow.com has address 69.59.196.211
Run Code Online (Sandbox Code Playgroud)
在 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
Run Code Online (Sandbox Code Playgroud)
Jan*_*nen 10
这个古老的帖子似乎有很多创造性的解决方案。
如果我需要确保也/etc/hosts被访问,我倾向于使用
getent hosts somehost.com
这是有效的,至少如果`/etc/nsswitch.conf' 已经被配置为使用文件(通常是这样)。
对于 IPv4,有一个标准程序可以使用解析器(包括 /etc/hosts)开箱即用:
host="localhost"
ip="`gethostip -d "$host"`"
Run Code Online (Sandbox Code Playgroud)
它是 Debian 的一部分,安装它:
apt-get install syslinux
Run Code Online (Sandbox Code Playgroud)
对于 IPv4 以外的其他协议(如 IPv6),我目前不知道类似的工具。更新: 因此,我刚刚编写了一个也能够解析 IPv6 的小工具:
https://github.com/hilbix/misc/blob/master/src/ipof.c
它被认为是快速和肮脏的外壳使用,例如gethostip但也允许 IPv6:
ip="`ipof -6 -- heise.de`"
Run Code Online (Sandbox Code Playgroud)
它也可以交互使用,例如:
ipof -a -d -x -v -h -
Run Code Online (Sandbox Code Playgroud)
HTH
您可以使用标准系统调用来完成此操作。这是 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);
Run Code Online (Sandbox Code Playgroud)
产生输出:
$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'
];
Run Code Online (Sandbox Code Playgroud)
(在命令行中,相同的脚本可以被写为:perl -MSocket -MData::Dumper -wle'my @addresses = gethostbyname("google.com"); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print Dumper(\@ips)')
您可以在其他语言中类似地执行此操作 - 请参阅系统调用的手册页man -s3 gethostbyname等。
| 归档时间: |
|
| 查看次数: |
50418 次 |
| 最近记录: |