如何在Python中获取计算机的完全限定域名?

50

我知道可以使用platform.node()来获取我的计算机的网络名称:

>>> import platform
>>> platform.node()
'MyComputerName'

但是我真正想要的是与以下类似的功能:

>>> get_full_network_domain_name()
'MyComputerName.it.na.mycompany.com'

有像这样的东西存在吗?

1个回答

69

1
谢谢,"完全限定域名"是我要找的词组! - Jace Browning
10
在命令行中,对我来说这个命令并不能产生与“hostname -f”相同的结果。所以要小心。 - Daniël van Eeden
20
@semente, hostname -f 通过这样的方式实现:socket.getaddrinfo(socket.gethostname(), 0, flags=socket.AI_CANONNAME)[0][3]getfqdn()则似乎会在 /etc/hosts 中查找主机名,并使用包含一个点的第一条条目。对我来说,hostname -f 返回 'daniel-thinkpad',而 getfqdn() 返回 localhost6.localdomain6。 - Daniël van Eeden
4
谢谢!不过我的 getaddrinfo 版本不支持关键字参数,所以我只能使用 socket.getaddrinfo(socket.gethostname(), 0, 0, 0, 0, socket.AI_CANONNAME)[0][3] - Florian Brucker
1
这根本不可靠。有一半的时间它只返回主机名,而我发现它返回的主机名可以通过nslookup轻松查找并返回一个fqdn。 - Nathan McKaskle
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接