Я хочу перебрать некоторые IP-адреса и сети, чтобы проверить, принадлежит ли IP определенной сети - PullRequest
1 голос
/ 01 апреля 2020

Я хочу перебрать некоторые IP-адреса и сети, чтобы проверить, принадлежит ли IP определенной сети.

Это то, что я написал до сих пор.

import netaddr, ipaddress

from netaddr import *

IP_found = []

IP_miss = []

dca = ['172.17.34.2', '172.17.33.1', '172.17.35.1', '172.17.36.2']

ip_net = [IPNetwork('172.17.34.0/27'), IPNetwork('172.17.35.0/27')]

for element in ip_net:
    temp = ipaddress.ip_network(element)
    for ip in dca:
        if ipaddress.ip_address(ip) in (temp):
            IP_found.append(ip)
            break
        else:
            IP_miss.append(ip)

print(len(IP_found))
print(len(IP_miss)) 

print(IP_found)
print(IP_miss)

Это мой ожидаемый результат.

IP_found -> ['172.17.34.2', '172.17.35.1']

IP_miss -> ['172.17.33.1', '172.17.36.2']

Я получил следующий вывод:

['172.17.34.2', '172.17.35.1']

['172.17.34.2', '172.17.33.1']

1 Ответ

1 голос
/ 01 апреля 2020
import netaddr,ipaddress

from netaddr import *
IP_found = []
IP_miss = []
dca = ['172.17.34.2', '172.17.33.1', '172.17.35.1', '172.17.36.2']
ip_net = [IPNetwork('172.17.34.0/27'), IPNetwork('172.17.35.0/27')]

for ip in dca: # Loops through the ip
    if any(ip in ip_subnet for ip_subnet in ip_net): # Loops through subnet
        IP_found.append(ip) 
    else:
        IP_miss.append(ip)

print(len(IP_found))
print(len(IP_miss))
print(IP_found)
print(IP_miss)

Попробуйте вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...