RHEL6中的Ruby短Socket.gethostname

时间:2015-04-28 13:34:53

标签: ruby hostname rhel6

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

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

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

你可以帮忙吗?

由于 扬

2 个答案:

答案 0 :(得分:0)

正如您在rubydoc +点击切换来源中看到的那样,gethostnamec stdlib的简单包装。

也就是说,您可能会尝试编译并执行以下代码。一旦它返回不是你想要的,你可能会被hostname -s

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

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

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

答案 1 :(得分:0)

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

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