如何在Python中获取完全限定的主机名?

12

我正在尝试在Python中获取主机名。 在Linux中,如果我在命令提示符上输入hostname,我会得到

root@phxdbx45:/home/david/zkpython# hostname
phxdbx45

但是如果我输入hostname -f,那么在Ubuntu下我会得到完整的主机名,这也是我需要从Python中获得的。

root@phxdbx45:/home/david/zkpython# hostname -f
phxdbx45.phx.host.com
我知道在Python中我们可以使用下面的代码,但它并没有给我完全合格的主机名。 它给出了与我之前提到的相同的hostname输出。

我知道在Python中我们可以使用以下代码,但它不能为我提供完全合格的主机名。它会给出我之前提到过的 hostname 的输出。

#!/usr/bin/python

import socket

hostname = socket.gethostname()
print hostname

有没有一种可靠且正确的方法在Python中获取完全限定的主机名?

1个回答

33

使用具有描述性名称的函数socket.getfqdn()

>>> import socket   
>>> socket.getfqdn()
'phxdbx45.phx.host.com'

1
那只是给我“localhost”。 - xApple
1
我获取了我的机器的简单名称,没有域名,但它与hostname -f返回的相同。然而,hostname --all-fqdns返回FQDN。 - EM0
这绝对取决于主机操作系统的配置。正如 @xApple 提到的,有可能只获得“localhost”。 - András Aszódi

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