校驗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))
    

    執行結果:
    在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章