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

Posted

技术标签:

【中文标题】如何在 Python 中获取计算机的完全限定域名?【英文标题】:How do I get my computer's fully qualified domain name in Python? 【发布时间】:2012-07-19 18:28:45 【问题描述】:

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

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

但我真正想要的是类似于以下内容的东西:

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

这样的东西存在吗?

【问题讨论】:

【参考方案1】:

完全限定域名由socket.getfqdn()返回。

【讨论】:

谢谢,“完全合格的域名”是我正在寻找的短语! 对我来说,这不会产生与 shell 上的 hostname -f 相同的结果。所以要小心。 @DaniëlvanEeden,你知道它返回的情况和hostname -f不一样吗? @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ëlvanEeden:谢谢!但是,我的getaddrinfo 版本不支持关键字参数,所以我不得不改用socket.getaddrinfo(socket.gethostname(), 0, 0, 0, 0, socket.AI_CANONNAME)[0][3]

以上是关于如何在 Python 中获取计算机的完全限定域名?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置服务器的完全限定域名?

获取 Python 类的完全限定名称(Python 3.3+)

如何将完全限定的类名映射到 Python 中的类对象?

如何在 C# 中使用反射获取类型的完全限定名称

如何使用Ant获取完全限定的主机名

在 openBSD 上 chrooted Apache+MsSQL;无法确定服务器的完全限定域名