Python에서 IP 주소 가져 오기

Shivam Arora 2023년1월30일
  1. socket.gethostname()함수를 사용하여 Python에서 로컬 IP 주소 가져 오기
  2. socket.getsockname()기능을 사용하여 Python에서 로컬 IP 주소 가져 오기
  3. netifaces모듈을 사용하여 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

관련 문장 - Python Network