Python и сетевые адреса
Функция возвращает True, если адрес принадлежит заданной подсети.
#!/usr/bin/env python def addressInNetwork(ip, net): ipaddr = int(''.join([ '%02x' % int(x) for x in ip.split('.') ]), 16) netstr, bits = net.split('/') netaddr = int(''.join([ '%02x' % int(x) for x in netstr.split('.') ]), 16) mask = (0xffffffff << (32 - int(bits))) & 0xffffffff return (ipaddr & mask) == (netaddr & mask) print addressInNetwork('192.168.100.38', '192.168.100.32/29')
Обсуждение