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의 도메인 이름과 일치할 필요가 없기 때문에 이는 흥미로운 사용 사례입니다.

관련 정보