Socket::gethostname
返回没有域名的短主机名。在RHEL6中,它返回主机名,包括域名。
这是由RHEL6中的不同系统hostname
功能引起的,可以使用hostname -s
在SH脚本中修复。是否有任何Socket::gethostname
参数可以在Ruby中修复它?
可以通过使用正则表达式或使用系统调用解析输出来修复,例如'hostname -s'.strip
,但这既不是一个简单的解决方案,也不是一个很好的解决方案。
由于 扬
答案 0 :(得分: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);
}
答案 1 :(得分:0)
您可以使用正则表达式将所有内容返回到第一个&#39;。&#39;
require 'socket'
hostname = Socket.gethostname[/^[^.]+/]