본문 바로가기
카테고리 없음

Python을 사용하여 현재 컴퓨터의 IP 주소를 알아내는 방법

by 즐거운 지니 2024. 7. 13.
반응형

Python을 사용하여 현재 컴퓨터의 IP 주소를 알아내는 방법은 여러 가지가 있습니다. 일반적으로 socket 모듈을 사용하여 IP 주소를 얻을 수 있습니다. 아래는 Windows 및 Linux에서 모두 작동하는 코드를 제시합니다.

방법 1: socket 모듈 사용

socket 모듈을 사용하여 현재 연결된 IP 주소를 알아내는 방법입니다.

import socket

def get_ip_address():
    try:
        # 임의의 외부 호스트에 연결하여 로컬 IP 주소를 얻음 (예: Google DNS 서버)
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(("8.8.8.8", 80))
        ip_address = s.getsockname()[0]
        s.close()
    except Exception as e:
        ip_address = "Unable to get IP address"
        print(f"Error: {e}")
    return ip_address

if __name__ == "__main__":
    ip = get_ip_address()
    print(f"Your IP address is: {ip}")

이 코드는 Google의 공개 DNS 서버(8.8.8.8)와 연결을 시도하여 로컬 IP 주소를 얻습니다. 이는 대부분의 네트워크 설정에서 작동합니다.

방법 2: netifaces 모듈 사용

netifaces 모듈을 사용하면 보다 구체적으로 네트워크 인터페이스 정보를 얻을 수 있습니다. 이 모듈은 추가 설치가 필요합니다.

pip install netifaces
import netifaces

def get_ip_address():
    ip_addresses = []
    interfaces = netifaces.interfaces()

    for interface in interfaces:
        addresses = netifaces.ifaddresses(interface)
        if netifaces.AF_INET in addresses:
            for address in addresses[netifaces.AF_INET]:
                ip_addresses.append(address['addr'])

    return ip_addresses

if __name__ == "__main__":
    ips = get_ip_address()
    for ip in ips:
        print(f"IP address: {ip}")

이 코드는 모든 네트워크 인터페이스에 대해 IP 주소를 가져와 출력합니다.

방법 3: subprocess 모듈 사용 (플랫폼 별)

Windows와 Linux에서 subprocess 모듈을 사용하여 시스템 명령어를 실행하여 IP 주소를 가져오는 방법입니다.

import subprocess
import platform

def get_ip_address():
    ip_address = "Unable to get IP address"
    try:
        if platform.system() == "Windows":
            result = subprocess.check_output("ipconfig", shell=True).decode()
            for line in result.split("\n"):
                if "IPv4 Address" in line:
                    ip_address = line.split(":")[-1].strip()
        elif platform.system() == "Linux":
            result = subprocess.check_output("hostname -I", shell=True).decode()
            ip_address = result.strip()
    except Exception as e:
        print(f"Error: {e}")
    return ip_address

if __name__ == "__main__":
    ip = get_ip_address()
    print(f"Your IP address is: {ip}")

이 코드는 Windows에서 ipconfig 명령어를, Linux에서 hostname -I 명령어를 사용하여 IP 주소를 얻습니다.

요약

  • 방법 1: socket 모듈을 사용하여 로컬 IP 주소를 얻습니다. 간단하고 대부분의 경우에 유용합니다.
  • 방법 2: netifaces 모듈을 사용하여 네트워크 인터페이스별로 IP 주소를 얻습니다. 보다 구체적인 정보를 얻을 수 있습니다.
  • 방법 3: subprocess 모듈을 사용하여 시스템 명령어를 실행하여 IP 주소를 얻습니다. 플랫폼별로 다르게 동작합니다.

각 방법은 서로 다른 상황에서 유용할 수 있으며, 필요에 따라 적절한 방법을 선택하여 사용할 수 있습니다.

반응형

댓글