如何在Go中查找本地主机的FQDN?
顺便提一下:net.LookupAddr()在Windows上不起作用,因此这不是一个选择。
默认情况下没有简短的方法。
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
os.Hostname()
返回内核报告的系统主机名。因此,如果您的计算机名为computer1
,则os.Hostname()
返回computer1
。如果您的计算机名为computer1.my.office
,则os.Hostname()
返回computer1.my.office
。在Windows上,情况也是一样的。如果您想要域名(指Active Directory域),有以下四种方法:
wmic computersystem get domain
systeminfo | findstr /B /C:"Domain"
USERDNSDOMAIN
存在,并评估其值(请注意:该变量的值是指存储用户的域)
IpAdapterAddresses
系统调用;在 Linux 上,当我将应用程序移植到 CentOS 时,我将不得不弄清楚如何做。 - undefinedUSERDNSDOMAIN
会被设置,但可能不存在,但如果存在,这真的是你想要的吗?Go语言无法知道除了内核配置之外,你可能还想要什么。在Linux上,你想要第一个网络接口的PTR记录吗?还是你想要主机名加上resolv.conf
中的“domain”条目?或者你想要本地地址在/etc/hosts
中列出的第一个完全限定域名(FQDN)?或者你想要使用nswitch.conf
从其他目录查找主机? - undefined