Hướng dẫn check ipv4 or ipv6 python - kiểm tra ipv4 hoặc ipv6 python

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    Examples:

    Bàn luận “192.168.0.1”
    Output : IPv4
    Explanation : It is a valid IPv4 address

    Cho một chuỗi. Nhiệm vụ là kiểm tra xem chuỗi đã cho là IPv4 hoặc IPv6 hoặc không hợp lệ. “2001:0db8:85a3:0000:0000:8a2e:0370:7334”
    Output : IPv6
    Explanation : It is a valid IPv6 address

    Đầu vào: Hồi 192.168.0.1 Đầu ra: IPv4Explanation: Đây là địa chỉ IPv4 hợp lệ “255.32.555.5”
    Output : Invalid
    Explanation : It is an invalid IPv4 address as the 3rd octet value(i.e 555) is greater 255.

    Đầu vào: Hồi 2001: 0db8: 85a3: 0000: 0000: 8a2e: 0370: 7334 đầu ra: IPv6Explanation: Đây là địa chỉ IPv6 hợp lệ “250.32:555.5”
    Output : Invalid
    Explanation : The given string is invalid as it consists of both : and .

    Đầu vào: Đầu ra 255.32.555.5 Đầu ra: Không hợp lệ: Đây là địa chỉ IPv4 không hợp lệ là giá trị octet thứ 3 (tức là 555) lớn hơn 255.

    Đầu vào: Tiếng 250.32: 555.5 Đầu ra: Không hợp lệ: Chuỗi đã cho không hợp lệ vì nó bao gồm cả hai: và.

    Để thực hiện vấn đề trên, chúng tôi sẽ sử dụng mô -đun

    >>> ipaddress.ip_address("10.10.10.300")
    Traceback (most recent call last):
      File "", line 1, in 
      File "/opt/anaconda3/lib/python3.8/ipaddress.py", line 53, in ip_address
        raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
    ValueError: '10.10.10.300' does not appear to be an IPv4 or IPv6 address 
    4 trong Python. Mô -đun này cung cấp các khả năng để tạo, thao tác và hoạt động trên các địa chỉ và mạng IPv4 và IPv6.

    Dưới đây là việc thực hiện.

    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    7
    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    8
    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    6

    >>> ipaddress.ip_address("10.10.10.300")
    Traceback (most recent call last):
      File "", line 1, in 
      File "/opt/anaconda3/lib/python3.8/ipaddress.py", line 53, in ip_address
        raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
    ValueError: '10.10.10.300' does not appear to be an IPv4 or IPv6 address 
    5
    >>> ipaddress.ip_address("10.10.10.300")
    Traceback (most recent call last):
      File "", line 1, in 
      File "/opt/anaconda3/lib/python3.8/ipaddress.py", line 53, in ip_address
        raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
    ValueError: '10.10.10.300' does not appear to be an IPv4 or IPv6 address 
    6
    >>> ipaddress.ip_address("10.10.10.300")
    Traceback (most recent call last):
      File "", line 1, in 
      File "/opt/anaconda3/lib/python3.8/ipaddress.py", line 53, in ip_address
        raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
    ValueError: '10.10.10.300' does not appear to be an IPv4 or IPv6 address 
    7
    >>> ipaddress.ip_address("10.10.10.300")
    Traceback (most recent call last):
      File "", line 1, in 
      File "/opt/anaconda3/lib/python3.8/ipaddress.py", line 53, in ip_address
        raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
    ValueError: '10.10.10.300' does not appear to be an IPv4 or IPv6 address 
    8

    >>> ipaddress.ip_address("10.10.10.300")
    Traceback (most recent call last):
      File "", line 1, in 
      File "/opt/anaconda3/lib/python3.8/ipaddress.py", line 53, in ip_address
        raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
    ValueError: '10.10.10.300' does not appear to be an IPv4 or IPv6 address 
    9
    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    0
    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    1
    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    2
    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    3
    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    4
    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    1
    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    6

    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid. The object returned is 10.10.10.10
    IP address 10.10.10.01 is valid. The object returned is 10.10.10.1
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid. The object returned is 192.168.1.20 
    0
    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid. The object returned is 10.10.10.10
    IP address 10.10.10.01 is valid. The object returned is 10.10.10.1
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid. The object returned is 192.168.1.20 
    1
    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid. The object returned is 10.10.10.10
    IP address 10.10.10.01 is valid. The object returned is 10.10.10.1
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid. The object returned is 192.168.1.20 
    2
    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid. The object returned is 10.10.10.10
    IP address 10.10.10.01 is valid. The object returned is 10.10.10.1
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid. The object returned is 192.168.1.20 
    3
    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid. The object returned is 10.10.10.10
    IP address 10.10.10.01 is valid. The object returned is 10.10.10.1
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid. The object returned is 192.168.1.20 
    4
    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid. The object returned is 10.10.10.10
    IP address 10.10.10.01 is valid. The object returned is 10.10.10.1
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid. The object returned is 192.168.1.20 
    5
    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid. The object returned is 10.10.10.10
    IP address 10.10.10.01 is valid. The object returned is 10.10.10.1
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid. The object returned is 192.168.1.20 
    6

    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    7
    a.b.c.d
    1
    a.b.c.d
    2

    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid. The object returned is 10.10.10.10
    IP address 10.10.10.01 is valid. The object returned is 10.10.10.1
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid. The object returned is 192.168.1.20 
    0
    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid. The object returned is 10.10.10.10
    IP address 10.10.10.01 is valid. The object returned is 10.10.10.1
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid. The object returned is 192.168.1.20 
    1
    a.b.c.d
    5

    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    7
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    7
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    8

    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid. The object returned is 10.10.10.10
    IP address 10.10.10.01 is valid. The object returned is 10.10.10.1
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid. The object returned is 192.168.1.20 
    3
    a.b.c.d
    7
    a.b.c.d
    8
    a.b.c.d
    8
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    0
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    1

    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    7
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    7
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    8

    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    7
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    3
    a.b.c.d
    8
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    5

    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    7
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    7
    ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$ 
    2

    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    7
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    3
    a.b.c.d
    8
    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid
    IP address 10.10.10.01 is valid
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid 
    2

    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    7
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    7
    ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$ 
    9

    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 
    7
    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 
    3
    a.b.c.d
    8
    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid
    IP address 10.10.10.01 is valid
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid 
    9

    IPv4
    IPv6
    Invalid
    Invalid

    Trong chương trình Python của bạn, bạn có thể muốn xác thực địa chỉ IP. Đây có thể là một yêu cầu nếu bạn viết các chương trình cấp hệ điều hành và không chỉ.

    Để xác thực địa chỉ IP bằng Python, bạn có thể sử dụng hàm ip_address () của mô -đun iPaddress. Điều này hoạt động cả cho địa chỉ IPv4 và IPv6. Bạn cũng có thể xác thực địa chỉ IP bằng cách sử dụng hàm tùy chỉnh hoặc biểu thức chính quy xác minh các bộ số mà địa chỉ IP được tạo.

    Hãy để xác nhận bắt đầu!

    • Làm cách nào để xác thực một địa chỉ IP trong Python?
    • Xác thực địa chỉ IP bằng hàm tùy chỉnh
    • Xác thực địa chỉ IP bằng cách sử dụng regex
    • Cách kiểm tra xem IP có loại IPv4 hay IPv6 bằng Python không
    • Cách kiểm tra xem địa chỉ IP có ở trong một mạng con nhất định không
    • Chuyển đổi địa chỉ IP sang các định dạng khác để xác thực
    • Sự kết luận

    Làm cách nào để xác thực một địa chỉ IP trong Python?

    Xác thực địa chỉ IP bằng hàm tùy chỉnhipaddress module.

    Xác thực địa chỉ IP bằng cách sử dụng regex

    Cách kiểm tra xem IP có loại IPv4 hay IPv6 bằng Python không

    >>> ipaddress.ip_address("10.10.10.10")
    IPv4Address('10.10.10.10') 

    Cách kiểm tra xem địa chỉ IP có ở trong một mạng con nhất định không

    Chuyển đổi địa chỉ IP sang các định dạng khác để xác thực

    >>> ipaddress.ip_address("10.10.10.300")
    Traceback (most recent call last):
      File "", line 1, in 
      File "/opt/anaconda3/lib/python3.8/ipaddress.py", line 53, in ip_address
        raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
    ValueError: '10.10.10.300' does not appear to be an IPv4 or IPv6 address 

    Sự kết luận

    Cách đơn giản nhất để xác thực nếu một chuỗi biểu thị địa chỉ IP là bằng cách sử dụng mô -đun iPaddress Python.

    import ipaddress 
    
    def validate_ip_address(address):
        try:
            ip = ipaddress.ip_address(address)
            print("IP address {} is valid. The object returned is {}".format(address, ip))
        except ValueError:
            print("IP address {} is not valid".format(address)) 

    Hãy để mở vỏ Python và xem hàm ipaddress.IP_Address () trả về những gì chúng tôi chuyển đến các chuỗi đại diện cho địa chỉ IPv4 hợp lệ và không hợp lệ.

    Người đầu tiên hợp lệ…

    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid. The object returned is 10.10.10.10
    IP address 10.10.10.01 is valid. The object returned is 10.10.10.1
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid. The object returned is 192.168.1.20 

    Hàm ip_address () trả về một đối tượng loại IPv4Address, điều này có nghĩa là nó có thể dịch chuỗi thành một địa chỉ IP hợp lệ.

    Bây giờ, hãy để thử với một IP không hợp lệ

    Lần này, hàm ip_address () làm tăng ngoại lệ giá trị vì chuỗi chúng tôi đã truyền không đại diện cho một địa chỉ IP hợp lệ.: you can also update the validate_ip_address() function to return True for a valid IP and False for an invalid IP instead of printing a message.

    Xác thực địa chỉ IP bằng hàm tùy chỉnh

    Xác thực địa chỉ IP bằng cách sử dụng regex

    Cách kiểm tra xem IP có loại IPv4 hay IPv6 bằng Python không

    a.b.c.d

    Cách kiểm tra xem địa chỉ IP có ở trong một mạng con nhất định không

    def validate_ip_address(address):
        parts = address.split(".")
    
        if len(parts) != 4:
            print("IP address {} is not valid".format(address))
            return False
    
        for part in parts:
            if not isinstance(int(part), int):
                print("IP address {} is not valid".format(address))
                return False
    
            if int(part) < 0 or int(part) > 255:
                print("IP address {} is not valid".format(address))
                return False
     
        print("IP address {} is valid".format(address))
        return True 

    Chuyển đổi địa chỉ IP sang các định dạng khác để xác thực

    • Sự kết luận
    • Cách đơn giản nhất để xác thực nếu một chuỗi biểu thị địa chỉ IP là bằng cách sử dụng mô -đun iPaddress Python.
    • Hãy để mở vỏ Python và xem hàm ipaddress.IP_Address () trả về những gì chúng tôi chuyển đến các chuỗi đại diện cho địa chỉ IPv4 hợp lệ và không hợp lệ.
      • Người đầu tiên hợp lệ…
      • Hàm ip_address () trả về một đối tượng loại IPv4Address, điều này có nghĩa là nó có thể dịch chuỗi thành một địa chỉ IP hợp lệ.

    Bây giờ, hãy để thử với một IP không hợp lệ

    validate_ip_address("10.10.10.10")
    validate_ip_address("10.10.10.01")
    validate_ip_address("10.10.10.300")
    validate_ip_address("10.260.10.300")
    validate_ip_address("192.168.1.20")
    
    [output]
    IP address 10.10.10.10 is valid
    IP address 10.10.10.01 is valid
    IP address 10.10.10.300 is not valid
    IP address 10.260.10.300 is not valid
    IP address 192.168.1.20 is valid 

    Lần này, hàm ip_address () làm tăng ngoại lệ giá trị vì chuỗi chúng tôi đã truyền không đại diện cho một địa chỉ IP hợp lệ.

    Chúng ta có thể xây dựng một chức năng đơn giản cho biết một địa chỉ IP có hợp lệ hay không tùy thuộc vào thực tế là một ngoại lệ giá trị được nâng lên bởi ipaddress.ip_address () cho các IP không hợp lệ.

    Lưu ý cách chúng tôi sử dụng phương thức String định dạng () để tạo các thông báo thành công và thất bại.

    Chuyển một vài địa chỉ IP cho chức năng này để xác nhận nếu nó hoạt động tốt.

    • Chức năng hoạt động tốt, cũng nhận thấy rằng trong thử nghiệm thứ hai từ chuỗi 10.10.10.01, chúng tôi lấy lại một đối tượng cho trò chơi 10.10.10.1.
    • Mô -đun loại bỏ số 0 hàng đầu trong phần thứ tư của địa chỉ IP.
    • Lưu ý: Bạn cũng có thể cập nhật chức năng Validate_IP_ADDRESS () để trả về true cho IP hợp lệ và sai cho IP không hợp lệ thay vì in tin nhắn.
    • Hãy cùng làm một chút thực hành Python và xem cách chúng tôi viết logic xác minh địa chỉ IPv4 mà không cần sử dụng mô -đun iPaddress.
    ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$ 

    Địa chỉ IPv4 có định dạng sau:

    >>> address = "10.10.10.10"
    >>> re.match(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$", address)
    
    >>> 
    >>> address = "10.10.10.300"
    >>> re.match(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$", address)
    
    >>> 
    >>> address = "10.10.10.3000"
    >>> re.match(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$", address)
    >>>

    Trong đó A, B, C, D là bốn số từ 0 đến 255. Chúng ta có thể sử dụng thông số kỹ thuật này để viết logic tùy chỉnh của chúng tôi.

    Trong chức năng này, chúng tôi trải qua các bước sau:

    Điều đó bởi vì chúng tôi phù hợp với số nguyên với 1 đến 3 chữ số. Điều này có nghĩa là sau khi sử dụng biểu thức chính quy, chúng tôi cũng phải xác minh xem phần số cụ thể của địa chỉ IP có giá trị thấp hơn 255 hay không.

    IP thứ ba không phù hợp với biểu thức vì phần thứ tư chứa 4 chữ số (3000).

    Bây giờ, hãy viết hàm sử dụng biểu thức chính quy này và cũng xác minh rằng mỗi phần có giá trị từ 0 đến 255.

    Đầu tiên, chúng tôi muốn chuyển đổi đối tượng Re.Match được trả về bởi hàm re.match (). Để làm điều đó, chúng tôi sẽ sử dụng hàm bool ().re.match() function. To do that we will use the bool() function.

    >>> ipaddress.ip_address("10.10.10.10")
    IPv4Address('10.10.10.10') 
    0

    Khi được chuyển đổi thành boolean, đối tượng được trả về bởi re.match () là đúng nếu chuỗi được truyền đến nó phù hợp với mẫu. Nó sai nếu không.

    Vì vậy, hãy để bắt đầu bằng cách trả về false trong chức năng của chúng tôi nếu chuỗi (trong trường hợp này là địa chỉ IP) không khớp với mẫu cho định dạng của địa chỉ IP.

    >>> ipaddress.ip_address("10.10.10.10")
    IPv4Address('10.10.10.10') 
    1

    Và hoàn thành chức năng bằng cách xác minh rằng mỗi số có giá trị từ 0 đến 255 theo cách chúng tôi đã thực hiện trong phần trước:

    >>> ipaddress.ip_address("10.10.10.10")
    IPv4Address('10.10.10.10') 
    2

    Đây là đầu ra khi bạn thực hiện chức năng này đối với một số địa chỉ IP.

    >>> ipaddress.ip_address("10.10.10.10")
    IPv4Address('10.10.10.10') 
    3

    Cách kiểm tra xem IP có loại IPv4 hay IPv6 bằng Python không

    Một cách đơn giản để kiểm tra xem IP là loại IPv4 hoặc IPv6 có sử dụng mô -đun iPaddress Python hay không.

    Khi bạn chuyển một địa chỉ IP ở định dạng chuỗi đến hàm ipaddress.ip_address (), một đối tượng mới sẽ được tạo.

    Đối tượng thuộc loại ipaddress.ipv4address hoặc ipaddress.ipv6address. Sử dụng hàm tích hợp isinstance () để xác minh loại đối tượng được tạo.ipaddress.IPv4Address or ipaddress.IPv6Address. Use the isinstance() built-in function to verify the type of object created.

    >>> ipaddress.ip_address("10.10.10.10")
    IPv4Address('10.10.10.10') 
    4

    Như chúng tôi đã làm trước khi chúng tôi sử dụng thử ngoại trừ để in một tin nhắn trong trường hợp địa chỉ IP không hợp lệ.

    Hãy gọi cho chức năng của chúng tôi

    >>> ipaddress.ip_address("10.10.10.10")
    IPv4Address('10.10.10.10') 
    5

    Tốt đẹp! 😀

    Cách kiểm tra xem địa chỉ IP có ở trong một mạng con nhất định không

    Mô -đun iPaddress Python cho phép kiểm tra xem địa chỉ IP có phải là một phần của mạng con cụ thể không.

    Đầu tiên, hãy để Lôi nhận được tất cả các địa chỉ IP trong mạng 192.168.1.0/28.192.168.1.0/28.

    Mô -đun iPaddress cung cấp chức năng ip_network () trả về đối tượng ipv4network hoặc ipv6network tùy thuộc vào loại địa chỉ IP được truyền đến hàm.ip_network() function that returns an IPv4Network or IPv6Network object depending on the type of IP address passed to the function.

    Nếu bạn chuyển một đối tượng được trả về bởi hàm ip_network () vào danh sách, bạn sẽ lấy lại danh sách tất cả các đối tượng IPS (IPv4Address hoặc IPv6Address) thuộc về mạng con.

    >>> ipaddress.ip_address("10.10.10.10")
    IPv4Address('10.10.10.10') 
    6

    Bây giờ chúng ta biết điều này, chúng ta có thể tạo một hàm trả về true nếu một địa chỉ IP thuộc về mạng con và sai.

    Bắt đầu bằng cách tạo một hàm đi qua các địa chỉ IP trong mạng 192.168.1.0/28 bằng cách sử dụng Python cho Loop:

    >>> ipaddress.ip_address("10.10.10.10")
    IPv4Address('10.10.10.10') 
    7

    Đầu ra là:

    >>> ipaddress.ip_address("10.10.10.10")
    IPv4Address('10.10.10.10') 
    8

    Và bây giờ chúng tôi sẽ trả về true nếu bất kỳ địa chỉ IP nào trong mạng con khớp với địa chỉ IP được truyền đến hàm như đối số đầu tiên.

    >>> ipaddress.ip_address("10.10.10.10")
    IPv4Address('10.10.10.10') 
    9

    Bạn có thể sử dụng các câu lệnh ASPER để kiểm tra chức năng này

    >>> ipaddress.ip_address("10.10.10.300")
    Traceback (most recent call last):
      File "", line 1, in 
      File "/opt/anaconda3/lib/python3.8/ipaddress.py", line 53, in ip_address
        raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
    ValueError: '10.10.10.300' does not appear to be an IPv4 or IPv6 address 
    0

    Sự khẳng định cho IP 192.168.1.200 không thành công vì IP không thuộc về mạng con 192.168.1.0/28.

    Chúng tôi không thấy bất kỳ ngoại lệ nào cho IP 192.168.1.8 bởi vì nó là một phần của mạng con và khẳng định không in bất kỳ tin nhắn nào nếu điều kiện được kiểm tra là đúng.

    Chuyển đổi địa chỉ IP sang các định dạng khác để xác thực

    Trong một số trường hợp, bạn có thể cần chuyển đổi địa chỉ IP được tạo bằng mô -đun iPaddress thành các định dạng khác trước khi thực hiện bất kỳ xác thực nào.

    Để chuyển đổi địa chỉ IP thành một chuỗi, bạn có thể sử dụng hàm str ().

    LƯU Ý: Hãy nhớ nhập mô -đun iPaddress trước nếu không bạn sẽ thấy ngoại lệ tên tuổi khi bạn cố gắng sử dụng mô -đun.: remember to import the ipaddress module first otherwise you will see a NameError exception when you try to use the module.

    >>> ipaddress.ip_address("10.10.10.300")
    Traceback (most recent call last):
      File "", line 1, in 
      File "/opt/anaconda3/lib/python3.8/ipaddress.py", line 53, in ip_address
        raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
    ValueError: '10.10.10.300' does not appear to be an IPv4 or IPv6 address 
    1

    Để chuyển đổi địa chỉ IP thành số nguyên, bạn có thể sử dụng hàm int ().

    >>> ipaddress.ip_address("10.10.10.300")
    Traceback (most recent call last):
      File "", line 1, in 
      File "/opt/anaconda3/lib/python3.8/ipaddress.py", line 53, in ip_address
        raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
    ValueError: '10.10.10.300' does not appear to be an IPv4 or IPv6 address 
    2

    Để chuyển đổi địa chỉ IP từ số nguyên thành đối tượng byte, bạn có thể sử dụng hàm v4_int_to_packed ().

    >>> ipaddress.ip_address("10.10.10.300")
    Traceback (most recent call last):
      File "", line 1, in 
      File "/opt/anaconda3/lib/python3.8/ipaddress.py", line 53, in ip_address
        raise ValueError('%r does not appear to be an IPv4 or IPv6 address' %
    ValueError: '10.10.10.300' does not appear to be an IPv4 or IPv6 address 
    3

    Một hàm tương tự, v6_int_to_packed (), áp dụng cho các địa chỉ IPv6.v6_int_to_packed(), applies to IPv6 addresses.

    Sự kết luận

    Trong hướng dẫn này, chúng tôi đã trải qua một cách rất đơn giản để thực hiện xác thực địa chỉ IP bằng thư viện iPaddress Python.ipaddress library.

    Chúng tôi cũng đã thấy cách sử dụng một chức năng tùy chỉnh và biểu thức thông thường để xác thực IP.

    Cuối cùng, chúng ta đã thấy cách xác minh nếu một địa chỉ IP cụ thể thuộc về mạng con.

    Bạn sẽ sử dụng phương pháp nào trong chương trình của mình?

    Bài viết liên quan:

    Hướng dẫn check ipv4 or ipv6 python - kiểm tra ipv4 hoặc ipv6 python

    Tôi là một nhà lãnh đạo công nghệ, kỹ sư phần mềm và huấn luyện viên lập trình. Tôi muốn giúp bạn trong hành trình trở thành một nhà phát triển siêu!

    Làm thế nào để bạn kiểm tra địa chỉ IP là ipv4 hoặc ipv6 python?

    Trong chương trình Python của bạn, bạn có thể muốn xác thực địa chỉ IP. Đây có thể là một yêu cầu nếu bạn viết các chương trình cấp hệ điều hành và không chỉ. Để xác thực địa chỉ IP bằng Python, bạn có thể sử dụng hàm ip_address () của mô -đun iPaddress. Điều này hoạt động cả cho địa chỉ IPv4 và IPv6.use the ip_address() function of the ipaddress module. This works both for IPv4 and IPv6 addresses.

    Làm cách nào để xác thực địa chỉ IPv4 trong Python?

    Phương thức - 1 Sử dụng phương thức Count ()..
    Def Validate_ip (S):.
    # Kiểm tra số lượng thời gian ..
    Nếu s.count ('.')! = 3:.
    Trả về 'Địa chỉ IP không hợp lệ'.
    ip_list = list (bản đồ (str, s. split ('. ....
    # Kiểm tra phạm vi của từng số giữa các khoảng thời gian ..
    Đối với phần tử trong IP_LIST:.
    if int(element) < 0 or int(element) > 255 or (element[0]=='0' and len(element)!=1):.

    Làm thế nào để bạn kiểm tra xem một địa chỉ IP có trong mạng trong Python không?

    Sử dụng iPaddress ...
    an_address = iPaddress.ip_address ('192.168.0.1').
    A_Network = iPaddress.ip_network ('192.168.0.0/24').
    address_in_network = an_address trong a_network ..
    print(address_in_network).

    Làm cách nào để grep một địa chỉ IP trong Python?

    Hãy cho chúng tôi xem cách trích xuất địa chỉ IP từ một tệp bằng Python ...
    Nhập mô -đun lại cho biểu thức chính quy ..
    Mở tệp bằng hàm Open () ..
    Đọc tất cả các dòng trong tệp và lưu trữ chúng trong danh sách ..
    Tuyên bố mẫu cho địa chỉ IP.Mẫu regex là:.