Python을 사용하여 시스템 호스트 이름을 가져오려면 어떻게 해야 합니까?
저는 지역 방송국의 채팅 프로그램을 쓰고 있어요.Python으로 컴퓨터를 식별하고 사용자가 설정한 컴퓨터 이름을 얻을 수 있으면 좋겠습니다.
용도와 그 기능.이렇게 하면hostname
Python 인터프리터가 실행되고 있는 컴퓨터의 경우:
import socket
print(socket.gethostname())
둘 다 휴대성이 뛰어납니다.
import platform
platform.node()
import socket
socket.gethostname()
를 사용하는 모든 솔루션HOST
또는HOSTNAME
환경변수는 이식할 수 없습니다.실행할 때 시스템에서 동작하더라도 cron과 같은 특수한 환경에서 실행할 경우 동작하지 않을 수 있습니다.
os 모듈을 로드하는 경우도 있기 때문에 다음 사항을 권장합니다.
import os
myhost = os.uname()[1]
그럼 어떻게 되는 거야?
import platform
h = platform.uname()[1]
실제로, 다음의 모든 결과를 보는 것이 좋을지도 모릅니다.platform.uname()
os.getenv('HOSTNAME')
그리고.os.environ['HOSTNAME']
항상 효과가 있는 것은 아니다.cron 작업과 WSDL에서는 HTTP HOSTNAME이 설정되어 있지 않습니다.대신 이것을 사용하세요.
import socket
socket.gethostbyaddr(socket.gethostname())[0]
/etc/hosts에서 짧은 별칭을 정의했더라도 윈도우즈에서도 항상 정규화된 호스트 이름을 반환합니다.
/etc/hosts에서 에일리어스를 정의한 경우socket.gethostname()
에일리어스가 반환됩니다. platform.uname()[1]
같은 일을 합니다.
저는 위의 내용이 통하지 않는 경우에 부딪혔습니다.현재 사용하고 있는 것은 다음과 같습니다.
import socket
if socket.gethostname().find('.')>=0:
name=socket.gethostname()
else:
name=socket.gethostbyaddr(socket.gethostname())[0]
먼저 gethostname을 호출하여 호스트 이름과 같은 것을 반환하는지 확인합니다. 반환되지 않은 경우 원래 솔루션을 사용합니다.
필드를 사용할 수 있습니다.nodename
어레이 인덱스를 사용하지 않도록 합니다.
os.uname().nodename
단, os.uname의 문서에서도socket.gethostname()
제가 맞다면 socket.gethostname 함수를 찾고 있습니다.
>> import socket
>> socket.gethostname()
'terminus'
socket.gethostname()
할 수 있다
이 코드 라인을 실행해야 합니다.
sock_name = socket.gethostname()
그런 다음 이름을 사용하여 주소를 찾을 수 있습니다.
print(socket.gethostbyname(sock_name))
시스템에 따라서는, 호스트명이 환경에서 설정됩니다.이 경우 os 모듈은 os.getenv를 통해 환경에서 꺼낼 수 있습니다.예를 들어 HOSTNAME이 원하는 것을 포함하는 환경변수일 경우 다음과 같이 취득됩니다.
import os
system_name = os.getenv('HOSTNAME')
업데이트: 댓글에서 설명한 바와 같이 모든 사용자의 환경이 이러한 방식으로 설정되는 것은 아니기 때문에 이 방법이 항상 작동하는 것은 아닙니다.처음에 이 질문에 대답했을 때는 이 솔루션을 사용하고 있었다고 생각합니다.그것은 웹 검색에서 처음 발견한 것이었기 때문입니다.그때 저는 이 솔루션을 사용할 수고가 많았습니다.휴대성이 부족하기 때문에 지금은 사용하지 않을 것입니다.하지만 이 답변은 참고용으로 남겨두겠습니다.FWIW는 사용자 환경에 시스템 이름이 있고 이미 os 모듈을 Import하고 있는 경우 다른 Import를 수행할 필요가 없습니다.테스트 - 프로그램이 동작할 것으로 예상되는 모든 환경에서 동작하지 않을 경우 제공된 다른 솔루션 중 하나를 사용하십시오.
완전 수식 호스트명을 취득하려면 socket.getfqdn()을 사용합니다.
import socket
print socket.getfqdn()
PyLog conf 파일에서 사용할 PC 이름이 필요했고 소켓 라이브러리는 사용할 수 없지만 os 라이브러리는 사용할 수 있습니다.
Windows의 경우:
os.getenv('COMPUTERNAME', 'defaultValue')
여기서 defaultValue는 없음 반환을 방지하는 문자열입니다.
언급URL : https://stackoverflow.com/questions/4271740/how-can-i-use-python-to-get-the-system-hostname
'source' 카테고리의 다른 글
가져오기가 있는 클래스를 확장합니다. (0) | 2022.11.25 |
---|---|
MySQL의 InnoDB와 MyISAM은 무엇입니까? (0) | 2022.11.25 |
mysql 도커 컨테이너가 자주 크래시됨 (0) | 2022.11.25 |
MySQL에서 번호 범위 생성 (0) | 2022.11.25 |
kubernetes/docker 군집에 mariadb galera 클러스터 배포 (0) | 2022.11.25 |