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