【问题标题】:How to check an IP address is within a range of two IPs in Python?如何检查IP地址是否在Python中的两个IP范围内?
【发布时间】:2021-09-08 22:45:42
【问题描述】:

我有一个 IP 地址,并获得了另外两个 IP 地址,它们共同创建了一个 IP 范围。我想检查第一个 IP 地址是否在此范围内。如何在不使用循环的情况下在 Python 中找到它?

【问题讨论】:

  • 如果您拥有每个 IP 的网络子网掩码,并且第一个 IP 子网掩码相同或更大,则此 IP 在该范围内。如果您没有子网掩码,您可以使用二进制 AND 尝试从那里获取 IP 的网络部分,您可以查看它是否在范围内。
  • IP 以什么格式给出?
  • 如果它是可迭代的,那么min_ip[0] <= cur_ip[0] < max_ip[0] 会告诉你给定的系列是否在一个范围内。然后可以对此进行解释以确定是否所有值都匹配
  • 你能举个例子吗?示例 IP 范围为 142.250.0.0 - 142.251.255.255

标签: python range ip subnet


【解决方案1】:

用于更改ip格式以便我们进行比较

def convert_ipv4(ip):
    return tuple(int(n) for n in ip.split('.'))

如果ip在范围内,此函数将返回True或False

def check_ipv4_in(addr, start, end):
    return convert_ipv4(start) < convert_ipv4(addr) < convert_ipv4(end)



ip_range = ('1.1.0.0', '1.1.255.255')

print(check_ipv4_in('1.1.99.99', *ip_range))

在这种情况下它将打印'true',因为在这种情况下函数返回True

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 2012-06-22
    • 2013-07-27
    • 2017-05-21
    • 2013-04-27
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    相关资源
    最近更新 更多