0

在 RHEL5 中,默认的 RubySocket::gethostname返回没有域名的短主机名。在 RHEL6 中,它返回包含域名的主机名。

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

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

你能帮忙吗?

谢谢简

4

2 回答 2

0

正如您可能在ruby​​doc +click-to-toggle-source 中看到的那样,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);
}
于 2015-04-28T15:07:52.413 回答
0

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

require 'socket'
hostname = Socket.gethostname[/^[^.]+/]
于 2015-10-23T05:34:51.350 回答