13

我需要获取运行 Ruby 脚本的主机的完全扩展主机名。在 Perl 中,我使用了 Sys::Hostname::Long 并取得了不错的效果。谷歌似乎建议我应该在 ruby​​ 中使用 Socket.hostname,但这只是返回节点名,而不是完整的主机名。

4

3 回答 3

20

这似乎有效:

hostname = Socket.gethostbyname(Socket.gethostname).first 
于 2008-09-30T02:43:19.710 回答
6
hostname = Socket.gethostbyname(Socket.gethostname).first

不建议使用,只有在正确设置反向 DNS 解析时才能使用。如果需要,这个因素错误有更长的解释。

如果您阅读事实代码,您会注意到他们通过以下方式完全回避了这个问题

fqdn = hostname + domainname

在哪里:

hostname = %[hostname]
domainname = %[hostname -f] # minus the first element

这是一个合理的假设,不依赖于 DNS 的设置(可能在盒子外部)。

于 2012-08-20T22:51:58.630 回答
-5

可能更简单 => 主机名 = Socket.gethostname

于 2009-12-01T07:59:01.273 回答