1

在 Go 中如何找到本地主机的 FQDN?

顺便说一句:net.LookupAddr() 在 Windows 上不起作用。所以这不是一个选择。

4

3 回答 3

3

默认情况下没有捷径。

os.Hostname()默认不提供完全限定域名。

cmd := exec.Command("/bin/hostname", "-f")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
    log.Errorf(err)
}
fqdn := out.String()
fqdn = fqdn[:len(fqdn)-1] // removing EOL

于 2015-12-17T10:00:42.240 回答
2

根据文档,函数os.Hostname()返回内核报告的系统主机名。因此,如果您的计算机名为computer1,则os.Hostname()返回computer1. 如果您的计算机被命名computer1.my.office,则os.Hostname()返回computer1.my.office。在 Windows 上,也是一样的。如果您想要域名(称为 Active Directory 域),您有四种方法:

  1. 解析此命令的结果:wmic computersystem get domain
  2. 解析此命令的结果:systeminfo | findstr /B /C:"Domain"
  3. 假设环境变量存在,USERDNSDOMAIN并评估他的值(注意:这个变量的值是在存储用户的域中引用的)
  4. 检查分配给工作站的其中一个 ip 是否可以通过 DNS 解析(此时,您可以查看:https ://github.com/Showmax/go-fqdn )
于 2018-08-03T11:55:09.193 回答
1

您可以使用此处演示的 net lib 执行一些体操。

于 2016-11-17T01:53:10.853 回答