如何在Ruby中获取当前主机的FQDN?

时间:2008-09-30 02:29:33

标签: ruby fqdn

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

3 个答案:

答案 0 :(得分:20)

这似乎有效:

hostname = Socket.gethostbyname(Socket.gethostname).first 

答案 1 :(得分:6)

hostname = Socket.gethostbyname(Socket.gethostname).first
建议不要使用

,只有正确设置了反向DNS解析后才能使用

。如果需要,This Facter bug会有更长的解释。

如果您阅读了代码,您会发现它们有点sidestep the issue altogether by saying

fqdn = hostname + domainname

其中:

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

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

答案 2 :(得分:-5)

可能有点简单=> hostname = Socket.gethostname