我需要获取我的Ruby脚本运行的主机的完全扩展主机名。 在Perl中,我使用了Sys :: Hostname :: Long取得了很好的结果。 Google似乎建议我在ruby中使用Socket.hostname,但这只返回节点名称,而不是完整的主机名。
hostname = Socket.gethostbyname(Socket.gethostname).first 不推荐使用,只有在您的反向DNS解析正确设置后才能正常工作。如果需要,可以查看此Facter错误的更长说明。 如果您阅读facter代码,您会注意到他们通过这种方式完全回避了这个问题: fqdn = hostname + domainname 其中: hostname = %[hostname] domainname = %[hostname -f] # minus the first element 这是一个合理的假设,不依赖于 DNS 的设置(DNS 可能是外部的)。
$ruby -e 'puts Socket.gethostbyname(Socket.gethostname).first' xin.local
,与 bash 的 'hostname' 命令$ hostname XIN.local
相反。 - asmaier