我需要获取运行 Ruby 脚本的主机的完全扩展主机名。在 Perl 中,我使用了 Sys::Hostname::Long 并取得了不错的效果。谷歌似乎建议我应该在 ruby 中使用 Socket.hostname,但这只是返回节点名,而不是完整的主机名。
dvorak
问问题
17942 次
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 回答