Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 호스트 이름과 IP 주소를 표시하는 프로그램 만들기

네트워크 프로그래밍이나 시스템 관리 작업을 하다 보면 현재 실행 중인 컴퓨터의 호스트 이름(Hostname)IP 주소를 확인해야 하는 경우가 자주 있습니다. Python에서는 기본 모듈인 socket만으로 이 정보를 아주 간단하게 얻을 수 있습니다.

핵심 함수 살펴보기

socket 모듈은 이 작업에 필요한 두 가지 함수를 제공합니다.

  • gethostname(): 로컬 머신(현재 실행 중인 컴퓨터)의 표준 호스트 이름을 반환합니다.
  • gethostbyname(): 호스트 데이터베이스에서 특정 호스트 이름에 대응하는 호스트 정보(IP 주소)를 조회합니다.
socket.gethostname()
socket.gethostbyname()

알고리즘

프로그램의 동작 흐름은 다음 세 단계로 정리할 수 있습니다.

  1. 1단계: socket 모듈을 임포트(import)합니다.
  2. 2단계: gethostname() 함수로 로컬 머신의 표준 호스트 이름을 가져옵니다.
  3. 3단계: gethostbyname() 함수에 호스트 이름을 전달하여 해당하는 IP 주소를 조회합니다.

예제 코드

아래 코드는 예외 처리까지 포함하여 호스트 이름과 IP 주소를 화면에 출력하는 완전한 예제입니다.

# 호스트 이름과 IP 주소 표시하기
import socket

def host_IP():
    try:
        hname = socket.gethostname()
        hip = socket.gethostbyname(hname)
        print("Hostname : ", hname)
        print("IP Address : ", hip)
    except:
        print("호스트 이름과 IP 주소를 가져올 수 없습니다")

# 드라이버 코드
host_IP()  # 함수 호출

실행 결과

프로그램을 실행하면 환경에 따라 다음과 같은 형태로 결과가 출력됩니다.

Hostname :   Satyajit-PC
IP Address :  192.168.1.66

참고 사항

  • gethostbyname()이 반환하는 IP는 일반적으로 사설 IP(내부 네트워크 주소)입니다. 공인(Public) IP를 확인하려면 외부 API를 호출하는 별도의 방법이 필요합니다.
  • DNS 설정이나 네트워크 환경에 따라 호스트 이름 조회가 실패할 수 있으므로, 위 예제처럼 try-except 블록으로 예외 처리를 해주는 것이 안전합니다.
  • Python 3.x 최신 버전에서는 socket.gethostbyname_ex()socket.getaddrinfo()를 활용하면 더 상세한 네트워크 인터페이스 정보를 얻을 수도 있습니다.