为什么 Python 'gethostname()' 在 FreeNAS 服务器控制台上运行时返回整个 FQDN?

为什么 Python 'gethostname()' 在 FreeNAS 服务器控制台上运行时返回整个 FQDN?

我得到这个(FreeNAS 11.2-RELEASE-U1):

Python 3.6.5 (default, Dec 20 2018, 21:27:40) 
[GCC 4.2.1 Compatible FreeBSD Clang 6.0.0 (tags/RELEASE_600/final 326565)] on freebsd11 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import socket 
>>> print (socket.gethostname()) 
backup-server.example.com
>>>

世界卫生大会...?

答案1

我认为它只是返回任何潜在的gethostname()称呼做。例如(尽管这是在 Linux 上):

# hostname foobar
# python -c 'import socket; print(socket.gethostname())'
foobar
# hostname foobar.example.org
# python -c 'import socket; print(socket.gethostname())'
foobar.example.org

如果您只想要主机名部分,则删除其余部分并不难:

# python -c 'import socket; import re; print(re.sub("\..*", "", socket.gethostname()))'
foobar

答案2

阅读 Python 文档,获取主机名没有指定具体返回的内容,并且 FreeBSD 在配置中包含机器的 FQDN。

返回一个字符串,其中包含当前正在执行 Python 解释器的计算机的主机名。

注意:gethostname()并不总是返回完全限定的域名;用于getfqdn()此。

其他平台可能只返回节点名,但在 Linux 上,这是一个有趣的用例,因为域名最初用于 NIS / Kerberos,并且不必与 DNS 中的域名匹配。

相关内容