2016-10-20 1 views
1

Ich habe eine Liste von IP address Netzwerke als solche:IPaddress - Das nächste nutzbare/30 Netzwerk aus einer Liste/30s?

172.16.1.0/30 
172.16.1.4/30 
172.16.1.8/30 
172.16.1.12/30 
172.16.1.20/30 
172.16.1.24/30 

Sie werden als je unten erstellt:

sr_data = SiteConfigData.objects() 

ls_subnets = [] 
for r in sr_data: 
if r.ip != '0.0.0.0': 
    ls_subnets.append(ipaddress.ip_network(r.ip + '/30')) 

Ich bin nicht sicher, wie dies zu tun, aber ich würde eine Funktion gerne Rückkehr der nächsten verfügbaren /30, so das erste Ergebnis 172.16.1.16/30 dann sollte einmal, dass das nächste Ergebnis verwendet wird, soll 172.16.1.28/30 sein.

Die Liste der Subnetze auch möglicherweise nicht in Ordnung ...

Ist das möglich? Ich kann mir nicht vorstellen, welche Logik ich für diese Arbeit brauchen würde.

+0

Welche Argumente werden an diese Funktion übergeben? Woher weiß es die derzeit verfügbaren, so dass es bestimmen kann, was als nächstes kommt? Deine Frage ist zu vage. – martineau

Antwort

1

ip_addresses Liste ist wie ls_subnets Ihres Codes.

ip_addresses = [ 
    "172.16.1.0/30", 
    "172.16.1.4/30", 
    "172.16.1.8/30", 
    "172.16.1.12/30", 
    "172.16.1.20/30", 
    "172.16.1.24/30", 
    ] # Assuming the input is neat 
used_subnets = [] 
for ip_address in ip_addresses: 
    ip_address = ip_address.replace("/30","") 
    a,b,c,d = map(int,ip_address.split('.')) 
    used_subnets.append(d) 
unused_subnets = ['172.16.1.%d/30'%num for num in range(0,30,4) if num not in used_subnets] 
Verwandte Themen