Python xác thực cidr

Mặc dù có rất nhiều bài báo và hướng dẫn trực tuyến về chủ đề này, cá nhân tôi cảm thấy rằng có thể viết một thứ gì đó từ đầu bằng Python [hoặc bất kỳ ngôn ngữ lập trình nào khác] là cách tốt nhất để học một khái niệm mới. Trong hướng dẫn này, tôi sẽ giải thích cách bạn có thể sử dụng Python để kiểm tra xem một Địa chỉ IP đã cho trong không gian IPv4 có nằm trong tiền tố mạng hay không [được biểu thị bằng ký hiệu CIDR]

Địa chỉ IPv4 thành nhị phân

IPv4 sử dụng 32 bit nhị phân để tạo một địa chỉ duy nhất trên mạng. Địa chỉ IPv4 được thể hiện bằng bốn số được phân tách bằng dấu chấm. Mỗi số là đại diện thập phân [cơ số 10] cho một số nhị phân tám chữ số [cơ số 2], còn được gọi là một octet

Với ý nghĩ đó, hãy viết hàm Python đầu tiên của chúng ta để chuyển đổi địa chỉ IPv4 này thành nhị phân 4 octet hoặc 32 bit

def ip_to_binary[ip]:
octet_list_int = ip.split["."]
octet_list_bin = [format[int[i], '08b'] for i in octet_list_int]
binary = [""].join[octet_list_bin]
return binary

Chạy thử nghiệm nhỏ

mạng con

Khi bạn gõ ipconfig trên thiết bị đầu cuối UNIX [hoặc dấu nhắc CMD đối với người dùng Windows], bạn sẽ nhận được màn hình khá chi tiết về thông tin Địa chỉ IP của mình. Tôi đã chụp ảnh màn hình của phần mà tôi quan tâm

Ở đây, chúng ta có thể thấy Địa chỉ IPv4 là 192. 168. 1. 69 và subnet mask là 255. 255. 255. 0

Địa chỉ IP trên mạng con có hai phần. mạng và nút. Phần mạng tự xác định mạng con. Nút, còn được gọi là máy chủ, là một thiết bị máy tính riêng lẻ được kết nối với mạng và yêu cầu một địa chỉ duy nhất. Mỗi máy tính biết cách tách hai phần của địa chỉ IP bằng cách sử dụng mặt nạ mạng con. Mặt nạ mạng con trông giống như một địa chỉ IP, nhưng nó thực sự chỉ là một bộ lọc được sử dụng để xác định phần nào của địa chỉ IP chỉ định mạng và nút

Trên mạng con này, chúng ta có thể thấy rằng mạng là 24 bit, chỉ cho phép 8 bit cho các máy chủ. Điều này có nghĩa là mạng này được phép có 2⁸ = 255 máy chủ. Nếu chúng tôi muốn có được mô phạm, chúng tôi không bao giờ sử dụng 0 và 255 còn lại để phát sóng. Điều này để lại cho chúng tôi 255–2 = 253 máy chủ

Bây giờ chúng ta đã có kích thước mạng con và địa chỉ, hãy thử viết một hàm để lấy dạng nhị phân của mạng mà địa chỉ này đại diện

def get_addr_network[address, net_size]:
#Convert ip address to 32 bit binary
ip_bin = ip_to_binary[address]
#Extract Network ID from 32 binary
network = ip_bin[0:32-[32-net_size]]
return network
Ký hiệu CIDR

Mạng được giải thích trong phần trước có thể được đặt trong ký hiệu CIDR như bên dưới

Trong CIDR, mạng có 2 phần, được phân tách bằng dấu “/”. Phần đầu tiên là địa chỉ và phần thứ hai là 24. “/24” có nghĩa là 24 bit được dành riêng cho mạng và 8 bit cho máy chủ. Dạng Địa chỉ IP của mạng con “/24” là 255. 255. 255. 0 [giống như phần trước. ]. Một số địa chỉ IP có thể được tìm thấy trong 192. 0. 2. 0/24 là 192. 0. 2. 1, 192. 0. 2. 2, 192. 0. 2. 3, v.v.

Mạng phù hợp

Bây giờ chúng ta đã hiểu rằng một Địa chỉ IP sẽ thuộc về Tiền tố mạng, nếu Mạng của chúng khớp với nhau, hãy ghi nhớ một hàm

Phạm vi được gạch nối không cần tạo khối CIDR nhưng số bắt đầu phải có giá trị thấp hơn số cuối. Mô-đun netaddr thực hiện hầu hết các công việc nặng nhọc cho chúng tôi ở đây

Định dạng không được hỗ trợ

Mặt nạ mạng [e. g. 192. 0. 2. 0 255. 255. 255. 0] và mặt nạ máy chủ [còn gọi là mặt nạ đảo ngược, 192. 0. 2. 0 0. 0. 0. 255] ký hiệu không được chấp nhận tại thời điểm này

Hàm cidrize trả về danh sách netaddr hợp nhất. Đối tượng mạng IP. Theo mặc định, các ngoại lệ phân tích cú pháp sẽ làm tăng CidrizeError [với đối số mặc định là raise_errors=True]. Bạn có thể vượt qua raise_errors=False để loại bỏ các ngoại lệ và văn bản lỗi sẽ được trả về dưới dạng danh sách. Điều này nhằm mục đích sử dụng với các tập lệnh hoặc API nơi nhận ngoại lệ sẽ không được ưu tiên

30 ví dụ mã Python được tìm thấy liên quan đến " get cidr". Bạn có thể bỏ phiếu cho những cái bạn thích hoặc bỏ phiếu cho những cái bạn không thích và chuyển đến dự án gốc hoặc tệp nguồn bằng cách nhấp vào các liên kết phía trên mỗi ví dụ

def get_cidr[iplist]:
    cidrs = []
    for ip in iplist:
        cidr = re.sub[r'\d+$', '0/24', ip]
        cidrs.append[ipaddress.ip_network[cidr]]

    result = []

    for cidr in cidrs:
        for i in iplist:
            ip = ipaddress.ip_address[i]
            if ip in cidr:
                result.append[str[cidr]]
                break
    out = get_top[result]
    for i in out:
        cidr, num = i.split['|']
        print[cidr, num] 

def get_vpc_cidr[self, radl, conn, inf]:
        """
        Get a common CIDR in all the RADL nets
        """
        nets = []
        for i, net in enumerate[radl.networks]:
            provider_id = net.getValue['provider_id']
            if net.getValue['create'] == 'yes' and not net.isPublic[] and not provider_id:
                net_cidr = self.get_free_cidr[net.getValue['cidr'],
                                              [subnet.cidr_block for subnet in conn.get_all_subnets[]] + nets,
                                              inf, 127]
                nets.append[net_cidr]

        if len[nets] == 0:  # there is no CIDR return the default one
            return "10.0.0.0/16"
        elif len[nets] == 1:  # there is only one, return it
            return nets[0]
        else:  # there are more, get the common CIDR
            return str[spanning_cidr[nets]] 

def get_cidr_name[cidr, ip_ranges_files, ip_ranges_name_key]:
    """Read display name for CIDRs from ip-ranges files."""

    for filename in ip_ranges_files:
        ip_ranges = read_ip_ranges[filename, local_file=True]
        for ip_range in ip_ranges:
            ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
            cidr = netaddr.IPNetwork[cidr]
            if cidr in ip_prefix:
                return ip_range[ip_ranges_name_key].strip[]
    for ip_range in aws_ip_ranges:
        ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
        cidr = netaddr.IPNetwork[cidr]
        if cidr in ip_prefix:
            return 'Unknown CIDR in %s %s' % [ip_range['service'], ip_range['region']]
    return 'Unknown CIDR' 

def get_new_cidr[uuid]:
    """
    Calculates a unused cidr for a subnet.

    :param uuid: The UUID of the subnet - Thus it can store which subnet gets which CIDR
    :type uuid: ``str``
    :return: Returns None if all available CIDR are used. Otherwise returns a valid CIDR.
    :rtype: ``str``
    """
    global lock
    lock.acquire[]

    global __current_ip
    while __first_ip = __last_ip or __current_ip < __first_ip or __current_ip in __issued_ips:
        return None

    __issued_ips[__current_ip] = uuid
    lock.release[]

    return Net.int_2_ip[__current_ip] + '/' + str[__default_subnet_bitmask] 

def get_namespace_subnet_cidr[namespace]:
    kubernetes = clients.get_kubernetes_client[]
    try:
        net_crd_path = [f"{constants.K8S_API_CRD_NAMESPACES}/"
                        f"{namespace['metadata']['name']}/kuryrnetworks/"
                        f"{namespace['metadata']['name']}"]
        net_crd = kubernetes.get[net_crd_path]
    except k_exc.K8sResourceNotFound:
        LOG.exception['Namespace not yet ready']
        raise k_exc.ResourceNotReady[namespace]
    except k_exc.K8sClientException:
        LOG.exception["Kubernetes Client Exception."]
        raise
    try:
        subnet_cidr = net_crd['status']['subnetCIDR']
    except KeyError:
        LOG.exception['Namespace not yet ready']
        raise k_exc.ResourceNotReady[namespace]
    return subnet_cidr 

def get_subnet_by_cidr[cidr, vpc_id='']:
    try:
        ec2 = boto3.resource['ec2']
        if vpc_id:
            for subnet in ec2.subnets.filter[Filters=[
                {'Name': 'cidrBlock', 'Values': [cidr]},
                {'Name': 'vpc-id', 'Values': [vpc_id]}
            ]]:
                return subnet.id
        else:
            for subnet in ec2.subnets.filter[Filters=[
                {'Name': 'cidrBlock', 'Values': [cidr]}
            ]]:
                return subnet.id
        return ''
    except Exception as err:
        logging.error["Error with getting Subnet ID by CIDR: " + str[err] + "\n Traceback: " + traceback.print_exc[
            file=sys.stdout]]
        append_result[str[{"error": "Error with getting Subnet ID by CIDR",
                   "error_message": str[err] + "\n Traceback: " + traceback.print_exc[file=sys.stdout]}]]
        traceback.print_exc[file=sys.stdout] 

________số 8

def get_next_cidr[client]:
    networks = client.networks.list[]
    last_cidr = ipaddress.ip_network["10.0.0.0/24"]
    for network in networks:
        if [network.attrs["IPAM"] and network.attrs["IPAM"]["Config"]
                and len[network.attrs["IPAM"]["Config"]] > 0
                and network.attrs["IPAM"]["Config"][0]["Subnet"]]:
            cidr = ipaddress.ip_network[network.attrs["IPAM"]["Config"][0]["Subnet"]]
            if cidr.network_address.packed[0] == 10:
                if cidr.prefixlen != 24:
                    raise Exception[
                            "Invalid network prefix length {0} for network {1}"
                            .format[cidr.prefixlen, network.name]]
                if cidr > last_cidr:
                    last_cidr = cidr

    next_cidr = ipaddress.ip_network[[last_cidr.network_address + 256].exploded + "/24"]
    if next_cidr.network_address.packed[0] > 10:
        raise Exception["No more networks available"]
    last_cidr = next_cidr
    return next_cidr 

def get_addr_network[address, net_size]:
#Convert ip address to 32 bit binary
ip_bin = ip_to_binary[address]
#Extract Network ID from 32 binary
network = ip_bin[0:32-[32-net_size]]
return network
0

def get_addr_network[address, net_size]:
#Convert ip address to 32 bit binary
ip_bin = ip_to_binary[address]
#Extract Network ID from 32 binary
network = ip_bin[0:32-[32-net_size]]
return network
1

def get_vpc_cidr[self, radl, conn, inf]:
        """
        Get a common CIDR in all the RADL nets
        """
        nets = []
        for i, net in enumerate[radl.networks]:
            provider_id = net.getValue['provider_id']
            if net.getValue['create'] == 'yes' and not net.isPublic[] and not provider_id:
                net_cidr = self.get_free_cidr[net.getValue['cidr'],
                                              [subnet.cidr_block for subnet in conn.get_all_subnets[]] + nets,
                                              inf, 127]
                nets.append[net_cidr]

        if len[nets] == 0:  # there is no CIDR return the default one
            return "10.0.0.0/16"
        elif len[nets] == 1:  # there is only one, return it
            return nets[0]
        else:  # there are more, get the common CIDR
            return str[spanning_cidr[nets]] 
0

def get_vpc_cidr[self, radl, conn, inf]:
        """
        Get a common CIDR in all the RADL nets
        """
        nets = []
        for i, net in enumerate[radl.networks]:
            provider_id = net.getValue['provider_id']
            if net.getValue['create'] == 'yes' and not net.isPublic[] and not provider_id:
                net_cidr = self.get_free_cidr[net.getValue['cidr'],
                                              [subnet.cidr_block for subnet in conn.get_all_subnets[]] + nets,
                                              inf, 127]
                nets.append[net_cidr]

        if len[nets] == 0:  # there is no CIDR return the default one
            return "10.0.0.0/16"
        elif len[nets] == 1:  # there is only one, return it
            return nets[0]
        else:  # there are more, get the common CIDR
            return str[spanning_cidr[nets]] 
1

def get_vpc_cidr[self, radl, conn, inf]:
        """
        Get a common CIDR in all the RADL nets
        """
        nets = []
        for i, net in enumerate[radl.networks]:
            provider_id = net.getValue['provider_id']
            if net.getValue['create'] == 'yes' and not net.isPublic[] and not provider_id:
                net_cidr = self.get_free_cidr[net.getValue['cidr'],
                                              [subnet.cidr_block for subnet in conn.get_all_subnets[]] + nets,
                                              inf, 127]
                nets.append[net_cidr]

        if len[nets] == 0:  # there is no CIDR return the default one
            return "10.0.0.0/16"
        elif len[nets] == 1:  # there is only one, return it
            return nets[0]
        else:  # there are more, get the common CIDR
            return str[spanning_cidr[nets]] 
2

def get_vpc_cidr[self, radl, conn, inf]:
        """
        Get a common CIDR in all the RADL nets
        """
        nets = []
        for i, net in enumerate[radl.networks]:
            provider_id = net.getValue['provider_id']
            if net.getValue['create'] == 'yes' and not net.isPublic[] and not provider_id:
                net_cidr = self.get_free_cidr[net.getValue['cidr'],
                                              [subnet.cidr_block for subnet in conn.get_all_subnets[]] + nets,
                                              inf, 127]
                nets.append[net_cidr]

        if len[nets] == 0:  # there is no CIDR return the default one
            return "10.0.0.0/16"
        elif len[nets] == 1:  # there is only one, return it
            return nets[0]
        else:  # there are more, get the common CIDR
            return str[spanning_cidr[nets]] 
3

def get_vpc_cidr[self, radl, conn, inf]:
        """
        Get a common CIDR in all the RADL nets
        """
        nets = []
        for i, net in enumerate[radl.networks]:
            provider_id = net.getValue['provider_id']
            if net.getValue['create'] == 'yes' and not net.isPublic[] and not provider_id:
                net_cidr = self.get_free_cidr[net.getValue['cidr'],
                                              [subnet.cidr_block for subnet in conn.get_all_subnets[]] + nets,
                                              inf, 127]
                nets.append[net_cidr]

        if len[nets] == 0:  # there is no CIDR return the default one
            return "10.0.0.0/16"
        elif len[nets] == 1:  # there is only one, return it
            return nets[0]
        else:  # there are more, get the common CIDR
            return str[spanning_cidr[nets]] 
4

def get_vpc_cidr[self, radl, conn, inf]:
        """
        Get a common CIDR in all the RADL nets
        """
        nets = []
        for i, net in enumerate[radl.networks]:
            provider_id = net.getValue['provider_id']
            if net.getValue['create'] == 'yes' and not net.isPublic[] and not provider_id:
                net_cidr = self.get_free_cidr[net.getValue['cidr'],
                                              [subnet.cidr_block for subnet in conn.get_all_subnets[]] + nets,
                                              inf, 127]
                nets.append[net_cidr]

        if len[nets] == 0:  # there is no CIDR return the default one
            return "10.0.0.0/16"
        elif len[nets] == 1:  # there is only one, return it
            return nets[0]
        else:  # there are more, get the common CIDR
            return str[spanning_cidr[nets]] 
5

def get_vpc_cidr[self, radl, conn, inf]:
        """
        Get a common CIDR in all the RADL nets
        """
        nets = []
        for i, net in enumerate[radl.networks]:
            provider_id = net.getValue['provider_id']
            if net.getValue['create'] == 'yes' and not net.isPublic[] and not provider_id:
                net_cidr = self.get_free_cidr[net.getValue['cidr'],
                                              [subnet.cidr_block for subnet in conn.get_all_subnets[]] + nets,
                                              inf, 127]
                nets.append[net_cidr]

        if len[nets] == 0:  # there is no CIDR return the default one
            return "10.0.0.0/16"
        elif len[nets] == 1:  # there is only one, return it
            return nets[0]
        else:  # there are more, get the common CIDR
            return str[spanning_cidr[nets]] 
6

def get_vpc_cidr[self, radl, conn, inf]:
        """
        Get a common CIDR in all the RADL nets
        """
        nets = []
        for i, net in enumerate[radl.networks]:
            provider_id = net.getValue['provider_id']
            if net.getValue['create'] == 'yes' and not net.isPublic[] and not provider_id:
                net_cidr = self.get_free_cidr[net.getValue['cidr'],
                                              [subnet.cidr_block for subnet in conn.get_all_subnets[]] + nets,
                                              inf, 127]
                nets.append[net_cidr]

        if len[nets] == 0:  # there is no CIDR return the default one
            return "10.0.0.0/16"
        elif len[nets] == 1:  # there is only one, return it
            return nets[0]
        else:  # there are more, get the common CIDR
            return str[spanning_cidr[nets]] 
7

def get_vpc_cidr[self, radl, conn, inf]:
        """
        Get a common CIDR in all the RADL nets
        """
        nets = []
        for i, net in enumerate[radl.networks]:
            provider_id = net.getValue['provider_id']
            if net.getValue['create'] == 'yes' and not net.isPublic[] and not provider_id:
                net_cidr = self.get_free_cidr[net.getValue['cidr'],
                                              [subnet.cidr_block for subnet in conn.get_all_subnets[]] + nets,
                                              inf, 127]
                nets.append[net_cidr]

        if len[nets] == 0:  # there is no CIDR return the default one
            return "10.0.0.0/16"
        elif len[nets] == 1:  # there is only one, return it
            return nets[0]
        else:  # there are more, get the common CIDR
            return str[spanning_cidr[nets]] 
8

def get_vpc_cidr[self, radl, conn, inf]:
        """
        Get a common CIDR in all the RADL nets
        """
        nets = []
        for i, net in enumerate[radl.networks]:
            provider_id = net.getValue['provider_id']
            if net.getValue['create'] == 'yes' and not net.isPublic[] and not provider_id:
                net_cidr = self.get_free_cidr[net.getValue['cidr'],
                                              [subnet.cidr_block for subnet in conn.get_all_subnets[]] + nets,
                                              inf, 127]
                nets.append[net_cidr]

        if len[nets] == 0:  # there is no CIDR return the default one
            return "10.0.0.0/16"
        elif len[nets] == 1:  # there is only one, return it
            return nets[0]
        else:  # there are more, get the common CIDR
            return str[spanning_cidr[nets]] 
9

def get_cidr_name[cidr, ip_ranges_files, ip_ranges_name_key]:
    """Read display name for CIDRs from ip-ranges files."""

    for filename in ip_ranges_files:
        ip_ranges = read_ip_ranges[filename, local_file=True]
        for ip_range in ip_ranges:
            ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
            cidr = netaddr.IPNetwork[cidr]
            if cidr in ip_prefix:
                return ip_range[ip_ranges_name_key].strip[]
    for ip_range in aws_ip_ranges:
        ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
        cidr = netaddr.IPNetwork[cidr]
        if cidr in ip_prefix:
            return 'Unknown CIDR in %s %s' % [ip_range['service'], ip_range['region']]
    return 'Unknown CIDR' 
0

def get_cidr_name[cidr, ip_ranges_files, ip_ranges_name_key]:
    """Read display name for CIDRs from ip-ranges files."""

    for filename in ip_ranges_files:
        ip_ranges = read_ip_ranges[filename, local_file=True]
        for ip_range in ip_ranges:
            ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
            cidr = netaddr.IPNetwork[cidr]
            if cidr in ip_prefix:
                return ip_range[ip_ranges_name_key].strip[]
    for ip_range in aws_ip_ranges:
        ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
        cidr = netaddr.IPNetwork[cidr]
        if cidr in ip_prefix:
            return 'Unknown CIDR in %s %s' % [ip_range['service'], ip_range['region']]
    return 'Unknown CIDR' 
1

def get_cidr_name[cidr, ip_ranges_files, ip_ranges_name_key]:
    """Read display name for CIDRs from ip-ranges files."""

    for filename in ip_ranges_files:
        ip_ranges = read_ip_ranges[filename, local_file=True]
        for ip_range in ip_ranges:
            ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
            cidr = netaddr.IPNetwork[cidr]
            if cidr in ip_prefix:
                return ip_range[ip_ranges_name_key].strip[]
    for ip_range in aws_ip_ranges:
        ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
        cidr = netaddr.IPNetwork[cidr]
        if cidr in ip_prefix:
            return 'Unknown CIDR in %s %s' % [ip_range['service'], ip_range['region']]
    return 'Unknown CIDR' 
2

def get_cidr_name[cidr, ip_ranges_files, ip_ranges_name_key]:
    """Read display name for CIDRs from ip-ranges files."""

    for filename in ip_ranges_files:
        ip_ranges = read_ip_ranges[filename, local_file=True]
        for ip_range in ip_ranges:
            ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
            cidr = netaddr.IPNetwork[cidr]
            if cidr in ip_prefix:
                return ip_range[ip_ranges_name_key].strip[]
    for ip_range in aws_ip_ranges:
        ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
        cidr = netaddr.IPNetwork[cidr]
        if cidr in ip_prefix:
            return 'Unknown CIDR in %s %s' % [ip_range['service'], ip_range['region']]
    return 'Unknown CIDR' 
3

def get_cidr_name[cidr, ip_ranges_files, ip_ranges_name_key]:
    """Read display name for CIDRs from ip-ranges files."""

    for filename in ip_ranges_files:
        ip_ranges = read_ip_ranges[filename, local_file=True]
        for ip_range in ip_ranges:
            ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
            cidr = netaddr.IPNetwork[cidr]
            if cidr in ip_prefix:
                return ip_range[ip_ranges_name_key].strip[]
    for ip_range in aws_ip_ranges:
        ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
        cidr = netaddr.IPNetwork[cidr]
        if cidr in ip_prefix:
            return 'Unknown CIDR in %s %s' % [ip_range['service'], ip_range['region']]
    return 'Unknown CIDR' 
4

def get_cidr_name[cidr, ip_ranges_files, ip_ranges_name_key]:
    """Read display name for CIDRs from ip-ranges files."""

    for filename in ip_ranges_files:
        ip_ranges = read_ip_ranges[filename, local_file=True]
        for ip_range in ip_ranges:
            ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
            cidr = netaddr.IPNetwork[cidr]
            if cidr in ip_prefix:
                return ip_range[ip_ranges_name_key].strip[]
    for ip_range in aws_ip_ranges:
        ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
        cidr = netaddr.IPNetwork[cidr]
        if cidr in ip_prefix:
            return 'Unknown CIDR in %s %s' % [ip_range['service'], ip_range['region']]
    return 'Unknown CIDR' 
5

def get_cidr_name[cidr, ip_ranges_files, ip_ranges_name_key]:
    """Read display name for CIDRs from ip-ranges files."""

    for filename in ip_ranges_files:
        ip_ranges = read_ip_ranges[filename, local_file=True]
        for ip_range in ip_ranges:
            ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
            cidr = netaddr.IPNetwork[cidr]
            if cidr in ip_prefix:
                return ip_range[ip_ranges_name_key].strip[]
    for ip_range in aws_ip_ranges:
        ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
        cidr = netaddr.IPNetwork[cidr]
        if cidr in ip_prefix:
            return 'Unknown CIDR in %s %s' % [ip_range['service'], ip_range['region']]
    return 'Unknown CIDR' 
6

def get_cidr_name[cidr, ip_ranges_files, ip_ranges_name_key]:
    """Read display name for CIDRs from ip-ranges files."""

    for filename in ip_ranges_files:
        ip_ranges = read_ip_ranges[filename, local_file=True]
        for ip_range in ip_ranges:
            ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
            cidr = netaddr.IPNetwork[cidr]
            if cidr in ip_prefix:
                return ip_range[ip_ranges_name_key].strip[]
    for ip_range in aws_ip_ranges:
        ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
        cidr = netaddr.IPNetwork[cidr]
        if cidr in ip_prefix:
            return 'Unknown CIDR in %s %s' % [ip_range['service'], ip_range['region']]
    return 'Unknown CIDR' 
7

def get_cidr_name[cidr, ip_ranges_files, ip_ranges_name_key]:
    """Read display name for CIDRs from ip-ranges files."""

    for filename in ip_ranges_files:
        ip_ranges = read_ip_ranges[filename, local_file=True]
        for ip_range in ip_ranges:
            ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
            cidr = netaddr.IPNetwork[cidr]
            if cidr in ip_prefix:
                return ip_range[ip_ranges_name_key].strip[]
    for ip_range in aws_ip_ranges:
        ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
        cidr = netaddr.IPNetwork[cidr]
        if cidr in ip_prefix:
            return 'Unknown CIDR in %s %s' % [ip_range['service'], ip_range['region']]
    return 'Unknown CIDR' 
8

def get_cidr_name[cidr, ip_ranges_files, ip_ranges_name_key]:
    """Read display name for CIDRs from ip-ranges files."""

    for filename in ip_ranges_files:
        ip_ranges = read_ip_ranges[filename, local_file=True]
        for ip_range in ip_ranges:
            ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
            cidr = netaddr.IPNetwork[cidr]
            if cidr in ip_prefix:
                return ip_range[ip_ranges_name_key].strip[]
    for ip_range in aws_ip_ranges:
        ip_prefix = netaddr.IPNetwork[ip_range['ip_prefix']]
        cidr = netaddr.IPNetwork[cidr]
        if cidr in ip_prefix:
            return 'Unknown CIDR in %s %s' % [ip_range['service'], ip_range['region']]
    return 'Unknown CIDR' 
9

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

Cách xác thực địa chỉ IP trong Python .
địa chỉ IP. địa chỉ ip["127. 0. 0. 1"].
truy nguyên cuộc gọi gần đây nhất >>> nâng cao ValueError['%r dường như không phải là địa chỉ IPv4 hoặc IPv6' % >>> ValueError. "đây không phải là địa chỉ IP" dường như không phải là địa chỉ IPv4 hoặc IPv6. .
>>> Địa chỉ IP "127. 0

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

Địa chỉ IP hợp lệ phải ở dạng A. B. C. D, trong đó A, B, C và D là các số từ 0-255 . Các số không thể có tiền tố là 0 trừ khi chúng là 0.

Làm cách nào để so sánh địa chỉ IP trong Python?

Mô-đun python ipaddress được sử dụng rộng rãi để xác thực và phân loại địa chỉ IP thành loại IPV4 và IPV6. Nó cũng có thể được sử dụng để so sánh các giá trị địa chỉ IP cũng như số học địa chỉ IP để thao tác các địa chỉ IP.

Làm cách nào để tìm tất cả các địa chỉ IP trên mạng bằng Python?

Thuật toán .
Nhập mô-đun ổ cắm
Lấy tên máy chủ bằng cách sử dụng ổ cắm. gethostname[] và lưu trữ nó trong một biến
Tìm địa chỉ IP bằng cách chuyển tên máy chủ làm đối số cho ổ cắm. gethostbyname[] và lưu trữ nó trong một biến

Chủ Đề