In Python 3.3+, è possibile utilizzare ipaddress modulo:
>>> import ipaddress
>>> ipaddress.ip_address('192.0.43.10') in ipaddress.ip_network('192.0.0.0/16')
True
Se l'installazione di Python è più vecchio di 3.3, è possibile utilizzare this backport.
Se si desidera valutare un sacco di indirizzi IP in questo modo, probabilmente si vorrà per calcolare la maschera di rete in anticipo, come
n = ipaddress.ip_network('192.0.0.0/16')
netw = int(n.network_address)
mask = int(n.netmask)
Poi, per ogni indirizzo, calcolare il binario la rappresentazione di uno dei
a = int(ipaddress.ip_address('192.0.43.10'))
a = struct.unpack('!I', socket.inet_pton(socket.AF_INET, '192.0.43.10'))[0]
a = struct.unpack('!I', socket.inet_aton('192.0.43.10'))[0] # IPv4 only
Infine, si può semplicemente controllare:
012.351.641,061 mila
Non è davvero chiaro cosa stai chiedendo. Cosa scegli, l'IP o la sottorete? La domanda "come posso sapere se un indirizzo IP si trova in una particolare sottorete?" O cosa? –