HOWTO · Python

Python에서 IP 주소 가져 오기

이 튜토리얼은 Python에서 IP 주소를 얻는 방법을 보여줍니다.

IP 주소는 0.0.0.0에서 255.255.255.255까지의 숫자 시퀀스로, 주소 범위는 0에서 255까지입니다. 네트워크를 통해 장치를 고유하게 식별 할 수 있습니다.

이 기사에서는 Python을 사용하여 로컬 IP 주소를 가져옵니다.

socket.gethostname()함수를 사용하여 Python에서 로컬 IP 주소 가져 오기

Python의socket모듈을 사용하여 네트워크 연결을 만들고 네트워크를 통해 메시지를 보낼 수 있습니다.

gethostname()함수는 현재 Python이 실행되고있는 시스템의 호스트 이름을 반환합니다.

예를 들면

import socket

print(socket.gethostbyname(socket.gethostname()))

출력:

192.168.0.118

socket.getsockname()기능을 사용하여 Python에서 로컬 IP 주소 가져 오기

컴퓨터 장치에 인터넷에 연결된 경로가 있으면getsockname()함수를 사용할 수 있습니다. 튜플 형태로 IP 주소와 포트를 반환합니다.

아래 코드를 참조하십시오.

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])

출력:

192.168.0.112

이 메서드는 로컬 컴퓨터의 기본 IP, 즉 기본 경로를 반환합니다.

이 함수를 사용하여 라우팅 가능한 인터넷 액세스가 필요하지 않은 사용자 정의 함수를 만들 수도 있습니다.

아래 코드를 참조하십시오.

import socket


def extract_ip():
    st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        st.connect(("10.255.255.255", 1))
        IP = st.getsockname()[0]
    except Exception:
        IP = "127.0.0.1"
    finally:
        st.close()
    return IP


print(extract_ip())

출력:

192.168.0.112

위의 방법은 모든 인터페이스에서 작동합니다. 또한 모든 공개, 비공개, 외부 IP와 함께 작동합니다. 이 방법은 Linux, Windows 및 OSX에서 효율적입니다.

netifaces모듈을 사용하여 Python에서 로컬 IP 주소 가져 오기

netifaces모듈은 네트워크 인터페이스 및 해당 상태에 대한 정보를 제공하는 데 사용됩니다.

아래와 같이 로컬 컴퓨터의 IP 주소를 가져 오는 데 사용할 수 있습니다.

from netifaces import interfaces, ifaddresses, AF_INET

for ifaceName in interfaces():
    addresses = [
        i["addr"]
        for i in ifaddresses(ifaceName).setdefault(AF_INET, [{"addr": "No IP addr"}])
    ]
    print(" ".join(addresses))

출력:

No IP addr
No IP addr
No IP addr
No IP addr
192.168.0.104
127.0.0.1