python 校验 ipv4 ipv6 格式是否正确,是否属于某网段

发布时间 2023-05-31 10:18:32作者: 十方央丶

使用 python 自带的 ipaddress 模块

一、ipv4

import ipaddress

# 判断 ipv4 地址格式是否正确 如:ip = "192.168.1.101"
ip = ipaddress.IPv4Address(ipv4)

# 判断 subnet 地址格式是否正确 如:subnet = "192.168.1.0/24"
network = ipaddress.IPv4Network(subnet)

# 判断ipv4 是否属于 subnet。True or False
return ip in network

二、ipv6

import ipaddress

# 判断 ipv6 地址格式是否正确 如:ip = "2001::101"
ip = ipaddress.IPv6Address(ipv4)

# 判断 subnet 地址格式是否正确 如:subnet = "2001::0/64"
network = ipaddress.IPv6Network(subnet)

# 判断ipv6 是否属于 subnet。 True or False
return ip in network

补充

import ipaddress
# 检查 ip 类型
def check_ip_type(ip):
    try:
        ipaddress.IPv4Address(ip)
        return "IPv4"
    except ipaddress.AddressValueError:
        try:
            ipaddress.IPv6Address(ip)
            return "IPv6"
        except ipaddress.AddressValueError:
            return "Invalid IP"