FreeNASサーバーコンソールで実行すると、Python 'gethostname()'がFQDN全体を返すのはなぜですか?

FreeNASサーバーコンソールで実行すると、Python 'gethostname()'が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のドメイン名と一致する必要はないため、これは興味深いユースケースです。

関連情報