Имеется функция:
def wildcard_iprange(ipaddr, sw):
if sw:
beginning = [ int(i) if not '-' in i else int(i.split('-')[0]) for i in ipaddr.split('.') ]
e = [ int(i) if not '-' in i else int(i.split('-')[1]) for i in ipaddr.split('.') ]
b = beginning[:]
else:
beginning = [ int(i) if i != '*' else 0 for i in ipaddr.split('.') ]
e = [ int(i) if i != '*' else 255 for i in ipaddr.split('.') ]
b = beginning[:]
while b[0] <= e[0]:
while b[1] <= e[1]:
while b[2] <= e[2]:
while b[3] <= e[3]:
yield '%s.%s.%s.%s' % (b[0], b[1], b[2], b[3])
b[3] = b[3] + 1
b[2] = b[2] + 1
b[3] = beginning[3]
b[1] = b[1] + 1
b[2] = beginning[2]
b[0] = b[0] + 1
b[1] = beginning[1]
Данная функция возвращает ip-адреса, исходя из того какая маска была передана при вызове.
Немного примеров того, что может быть передано:
192.168.1.*
192.168.*.*
192.*.1.*
....
Или
192.168.1-3.0-254
192-255.168.4-5.0-2
....