代码之家  ›  专栏  ›  技术社区  ›  dvorak

如何在ruby中获取当前主机的fqdn?

  •  13
  • dvorak  · 技术社区  · 17 年前

    我需要得到运行ruby脚本的主机的完全扩展主机名。在Perl中,我使用了sys::hostname::long,结果很好。google似乎建议我在ruby中使用socket.hostname,但这只是返回nodename,而不是完整的主机名。

    3 回复  |  直到 14 年前
        1
  •  20
  •   dvorak    17 年前

    这似乎有效:

    hostname = Socket.gethostbyname(Socket.gethostname).first 
    
        2
  •  6
  •   Alexis Lê-Quôc    14 年前
    hostname = Socket.gethostbyname(Socket.gethostname).first
    

    不建议使用,只有在正确设置反向DNS解析时才能使用。 This Facter bug 如果需要的话,有更长的解释。

    如果您阅读facter代码,您会注意到 sidestep the issue altogether by saying :

    fqdn = hostname + domainname
    

    哪里:

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

    这是一个合理的假设,不依赖于dns的设置(它可能在盒子外部)。

        3
  •  -5
  •   charley hine    16 年前

    可以是稍微简单一点的=>hostname=socket.gethostname

    推荐文章