2015-04-28 47 views
0

中,默认的Ruby的Socket::gethostname返回没有域名的短主机名。在RHEL6中,它返回主机名称,包括的域名。在RHEL5中,红宝石短的Socket.gethostname在RHEL6

这是由RHEL6中的不同系统hostname功能引起的,可以使用hostname -s在SH脚本中修复这些功能。是否有任何Socket::gethostname参数在Ruby中修复它?

可以通过使用正则表达式或使用系统调用解析输出来修复,例如, 'hostname -s'.strip,但这既不是一个简单的方法,也不是一个很好的解决方案。

你能帮忙吗?

感谢 月

回答

0

正如你可能在rubydoc +看点击即可触发源,gethostname是一个简单的包装,以c stdlib

也就是说,你可能会尝试编译并执行下面的代码。只要它不是你想要的,你可能会坚持到hostname -s

#include <unistd.h> 
#include <stdio.h> 

int main(int, char **) { 
    char buf[1025]; 
    gethostname(buf, 1024); 

    printf("%s\n", buf); 
} 
+0

感谢您的详细资料。我对Ruby比较陌生(更新其他代码),还没有找到源代码。 解决方案不是最快的,但因为它不是执行数千次,所以不会介意。这只是非法的。 –

0

您可以使用正则表达式将所有内容返回到第一个'。'

require 'socket' 
hostname = Socket.gethostname[/^[^.]+/]