반응형

파이썬, IP 유효성 확인 (IPv4, IPv6)

 

글. 수알치 오상문 

 

[방법 1]

import ipaddress

def is_valid_ip(ip):
    try:
        ipaddress.ip_address(ip)
        return True
    except ValueError:
        return False

if __name__ == "__main__":
    # IPv4 테스트
    ipv4_address = "192.168.1.1"
    assert is_valid_ip(ipv4_address) is True
    invalid_ipv4_address = "256.256.256.256"
    assert is_valid_ip(invalid_ipv4_address) is False

    # IPv6 테스트
    ipv6_address = "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
    assert is_valid_ip(ipv6_address) is True
    invalid_ipv6_address = "not_an_ipv6_address"
    assert is_valid_ip(invalid_ipv6_address) is False

    print("All tests passed!")

 

[방법 2]

import socket

def is_valid_ip(ip):
    try:  # IPv4 주소 검사
        socket.inet_pton(socket.AF_INET, ip)
        return True
    except socket.error:
        try:  # IPv6 주소 검사
            socket.inet_pton(socket.AF_INET6, ip)
            return True
        except socket.error:
            return False

if __name__ == "__main__":
    # IPv4 테스트
    ipv4_address = "192.168.1.1"
    assert is_valid_ip(ipv4_address) is True
    invalid_ipv4_address = "256.256.256.256"
    assert is_valid_ip(invalid_ipv4_address) is False

    # IPv6 테스트
    ipv6_address = "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
    assert is_valid_ip(ipv6_address) is True
    invalid_ipv6_address = "not_an_ipv6_address"
    assert is_valid_ip(invalid_ipv6_address) is False

    print("All tests passed!")

 

 

[방법 3] 정규식 사용

# 생략

 

반응형

+ Recent posts