2016-06-29 6 views
-1

Ich habe eine Liste von IP-Adressen (oder nur Zahlen für das, was es ankommt)python - unbenutzte IP finden/eine Nummer finden, die nicht in einem Bereich von nos verwendet wird?

Beispielliste:

192.168.1.1 
192.168.1.2 
192.168.1.4 
192.168.1.5 
192.168.1.7 
192.168.1.9 

was ich möchte eine Funktion, die mir zeigen, was IPs/Zahlen sind frei in eine Reihe.

Wenn mein Bereich beispielsweise 192.168.1.1-10 wäre, dann wären .3, .6, .8 und .10 verfügbar, aus diesen verfügbaren nos möchte ich die niedrigste Nr. Zurückgeben.

bisher habe ich meine Liste von IPs und ich habe Regex und Split verwendet, um die letzte Oktett/Nummer zu bekommen, aber weiß nicht, was als nächstes zu tun?

def getXOctect(ip_address,octect): 
    octects = re.split('(.*)\.(.*)\.(.*)\.(.*)', ip_address) 
    return octects[octect] 

list_of_ips = ['192.168.1.1','192.168.1.2','192.168.1.4','192.168.1.5','192.168.1.7','192.168.1.9'] 
octect_list = [] 
for item in list_of_ips: 
octect_list.append(getXOctect(item,4)) 
#now what? 

Antwort

1

könnte Youou versuchen so etwas wie

usable = [] 
for i in range(1,255): # or whichever are the available ports 
    if i not in octect_list: 
     usable.append(i) 
min(usable) # min value of the unused ports 
+0

aber die Zahl in seiner endgültigen Form könnte bis zu 254 sein, dann würde -1 nicht funktionieren würde ? – AlexW

+0

perfekt danke! – AlexW

0

Also wenn ich es verstehe, würden Sie in Ihrem Beispiel 192.168.1.3 zurückgeben? Wenn Sie wissen, wie Ihre Zahlen aussehen werden (wie das ganze Formular 192.168.1.x), könnten Sie wahrscheinlich einfach von 1 nach oben iterieren und prüfen, ob Ihre Nummer frei ist. Wenn es dann zurückgegeben wird, andernfalls erhöhen und wiederholen.

+0

ja, aber in meiner Live-Umgebung die Liste der Zahlen nicht in Ordnung sein (ist es eine Sortierfunktion, die funktionieren würde?) Auch die Zahl von 1- sein könnte 254, und ich möchte herausfinden, welches das niedrigste freie ist. Wie würde diese Funktion aussehen? – AlexW

+0

Nun, wenn octet_list eine Liste nur der letzten Zahl ist, dann könnten Sie octet_list = sorted (octet_list) verwenden, um es zu sortieren – Captain

Verwandte Themen