웹사이트 검색

Python - 호스트 이름에서 IP 주소 가져오기


Python 소켓 모듈을 사용하여 호스트 이름에서 IP 주소를 가져올 수 있습니다.

소켓 모듈은 Python 코어 라이브러리의 일부이므로 별도로 설치할 필요가 없습니다.

호스트 이름에서 IP 주소를 얻는 Python 소켓 모듈

Python 소켓 모듈 gethostbyname() 함수는 호스트 이름 인수를 받아들이고 문자열 형식으로 IP 주소를 반환합니다.

다음은 일부 웹사이트의 IP 주소를 찾기 위한 Python 인터프리터의 간단한 예입니다.

# python3.7
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import socket
>>> socket.gethostbyname('journaldev.com')
'45.79.77.230'
>>> socket.gethostbyname('google.com')
'172.217.166.110'
>>> 

참고: 웹 사이트가 로드 밸런서 뒤에 있거나 클라우드에서 작동하는 경우 IP 주소 조회에 대해 다른 결과를 얻을 수 있습니다.

예를 들어 facebook.com에 대해 위의 명령을 실행해 보십시오. 내 것과 같은 위치(인도)에 있지 않은 경우 출력으로 다른 IP 주소를 얻을 가능성이 있습니다.

웹 사이트의 IP 주소를 찾는 Python 스크립트

사용자에게 웹사이트 주소를 입력한 다음 해당 IP 주소를 인쇄하도록 요청하는 예를 살펴보겠습니다.

import socket

hostname = input("Please enter website address:\n")

# IP lookup from hostname
print(f'The {hostname} IP Address is {socket.gethostbyname(hostname)}')

다음은 스크립트에 대한 명령줄 인수로 호스트 이름을 전달하는 또 다른 예입니다. 스크립트는 IP 주소를 찾아서 인쇄합니다.

import socket
import sys

# no error handling is done here, excuse me for that
hostname = sys.argv[1]

# IP lookup from hostname
print(f'The {hostname} IP Address is {socket.gethostbyname(hostname)}')

산출:

# python3.7 ip_address.py facebook.com
The facebook.com IP Address is 157.240.23.35

socket.gethostbyname()의 오류 시나리오

호스트 이름이 유효한 IP 주소로 확인되지 않으면 socket.gaierror가 발생합니다. try-except 블록을 사용하여 프로그램에서 이 오류를 잡을 수 있습니다.

잘못된 호스트 이름에 대한 예외 처리가 포함된 업데이트된 스크립트는 다음과 같습니다.

import socket
import sys

hostname = sys.argv[1]

# IP lookup from hostname
try:
    ip = socket.gethostbyname(hostname)
    print(f'The {hostname} IP Address is {ip}')
except socket.gaierror as e:
    print(f'Invalid hostname, error raised is {e}')

산출:

# python3.7 ip_address.py jasjdkks.com               
Invalid hostname, error raised is [Errno 8] nodename nor servname provided, or not known
#

참조: 소켓 모듈 API 문서