我需要获得运行我的Ruby脚本的主机的完全扩展主机名.在Perl中,我使用了Sys :: Hostname :: Long,效果很好.谷歌似乎建议我应该在ruby中使用Socket.hostname,但那只返回节点名,而不是完整的主机名.
这似乎有效:
hostname = Socket.gethostbyname(Socket.gethostname).first
hostname = Socket.gethostbyname(Socket.gethostname).first
不建议使用,只有正确设置了反向DNS解析后才能使用.如果需要,此Facter错误有更长的解释.
如果您阅读了代码,您会注意到他们在某种程度上完全回避了这个问题:
fqdn = hostname + domainname
哪里:
hostname = %[hostname] domainname = %[hostname -f] # minus the first element
这是一个合理的假设,不依赖于DNS的设置(可能在框外).