校验ip/mask格式的网络地址是否可用

  1. ipaddress.ip_network(ip_mask)
    strict=True为默认值,表示进行严格比对,网络地址错误则会抛出异常

    import ipaddress
    
    purpose_addr = "1.1.1.1/24"
    ipaddress.ip_network(purpose_addr)
    

    执行结果:
    在这里插入图片描述
    也就是说,如果这个给定的网络地址是不可用的,那么将会抛出异常,如果我们想通过这个方法进行ip/mask进行判断的话,可以加上try进行捕获,如下:

    	import ipaddress
    
    	purpose_addr = "1.1.1.1/24"
    			
    	def ip_mask_verify(purpose_addr):
    	    try:
    	        ipaddress.ip_network(purpose_addr)
    	    except Exception as e:
    	        print(e)
    	        return False
    	    return True
    			
    	print(ip_mask_verify(purpose_addr))
    

    执行结果:
    在这里插入图片描述

  2. ipaddress.ip_network(ip/mask, strict=False)
    根据给出的ip_mask的值,通过ip_network()工厂函数计算出正确的网络地址【strict=False表示对于传入的ip/mask不进行严格比对,会进行修正操作,返回一个修正后的可用的网络地址】

    import ipaddress
    
    purpose_addr = "1.1.1.1/24"
    
    result_ip = ipaddress.ip_network(purpose_addr, strict=False)
    print(result_ip)
    

    执行结果:
    在这里插入图片描述
    那么,我们可以通过下面的方法进行ip/mask校验操作:

    	import ipaddress
    
    	purpose_addr = "1.1.1.1/24"
    		
    	def ip_mask_verify(purpose_addr):
    	    result_ip = ipaddress.ip_network(purpose_addr, strict=False)
    	    print(type(result_ip))  # 返回的是一个IPv4或者IPv6对象,想要进行比较操作,需要进行类型转化,如下的str()操作
    	    if purpose_addr != str(result_ip):
    	        return False
    	    return True
    			
    	print(ip_mask_verify(purpose_addr))
    

    执行结果:
    在这里插入图片描述

  3. IPy.IP(ip_mask)
    make_net=0为默认值,表示进行严格比对,网络地址错误则会抛出异常

    from IPy import IP
    
    purpose_addr = "1.1.1.1/24"
    a = IP(purpose_addr)
    

    执行结果:
    在这里插入图片描述
    也就是说,如果这个给定的网络地址是不可用的,那么将会抛出异常,如果我们想通过这个方法进行ip/mask进行判断的话,可以加上try进行捕获,如下:

    from IPy import IP
    
    purpose_addr = "1.1.1.1/24"
    	
    def ip_mask_verify(purpose_addr):
        try:
            IP(purpose_addr)
        except Exception as e:
            return False
        return True
    	
    print(ip_mask_verify(purpose_addr))
    

    执行结果:
    在这里插入图片描述

  4. IPy.IP(ip_mask,make_net=1)
    【make_net=1表示对于传入的ip/mask不进行严格比对,会进行修正操作,返回一个修正后的可用的网络地址】

    from IPy import IP
    
    purpose_addr = "1.1.1.1/24"
    	
    def ip_mask_verify(purpose_addr):
        result_ip = IP(purpose_addr, make_net=1)
        print(type(result_ip))  # 返回的是一个IPy.IP对象,想要进行比较操作,需要进行类型转化,如下的str()操作
        if purpose_addr != str(result_ip):
            return False
        return True
    	
    print(ip_mask_verify(purpose_addr))
    

    执行结果:
    在这里插入图片描述

发布了249 篇原创文章 · 获赞 170 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/gymaisyl/article/details/103270913