在RHEL5中,默认的Socket::gethostname
返回没有域名的短主机名。在RHEL6中,它返回主机名,包括域名。
这是由RHEL6中不同的系统RHEL6功能造成的,这些功能可以在使用hostname -s
的SH脚本中修复。在Ruby中有任何Socket::gethostname
参数来修复它吗?
通过使用正则表达式或使用系统调用(例如'hostname -s'.strip
)解析输出是可能的,但这既不是一个简单的解决方案,也不是一个好的解决方案。
你能帮忙吗?
谢谢简
发布于 2015-04-28 15:07:52
正如您在鲁比多+单击到切换源代码中可能看到的那样,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-10-23 05:34:51
您可以使用regex将所有内容返回到第一个“。”
require 'socket'
hostname = Socket.gethostname[/^[^.]+/]
https://stackoverflow.com/questions/29921086
复制相似问题