Форум сайта python.su
На вводе получаем диапазон ip адресов вида 10.10.20.0-10.10.30.0 или подобного (главное что первый всегда меньше последнего), необходимо нагенерить все ip адреса в этом промежутке. У меня пока получается очень наворочено и неудобоваримо. Может кто подкинет мысль как это сделать изящно используя python way.
Офлайн
IP Address Manipulation Library: http://www.python.org/dev/peps/pep-3144/
Офлайн
както писал для себя преобразование ip в целое и наооборот, чтобы хранить в базе
дано startip и endip
ip2int = lambda ip: reduce(lambda a,b: a*256+b, map(int, ip.split('.')), 0)
int2ip = lambda i: "%s.%s" % (int2ip(i/256), i%256) if i/256 else "%s" % (i%256,)
for ip in xrange(ip2int(startip),ip2int(endip)+1):
print int2ip(ip)
Отредактировано (Окт. 22, 2010 19:06:10)
Офлайн
LexanderГхм… А оно для питона 2.x есть?
IP Address Manipulation Library: http://www.python.org/dev/peps/pep-3144/
Офлайн
Да бы не плодить темы, есть строка ip = ‘10.10.10.0’ надо из нее сделать строку ‘10.10.11.0’ то есть 3 октет +1
Офлайн
evilempirerЭто называется offtop. Каждому вопросу - своя тема.
Да бы не плодить темы
evilempirerИ в чем проблема? преобразовываете к списку октетов, потом добавляете к нужному октету единицу и собираете назад в строку:
есть строка ip = ‘10.10.10.0’ надо из нее сделать строку ‘10.10.11.0’ то есть 3 октет +1
In [13]: ip = '10.10.10.1'
In [14]: l = map(int,ip.split('.'))
In [15]: l[2]+=1
In [16]: '.'.join(map(str,l))
Out[16]: '10.10.11.1'
Отредактировано (Окт. 25, 2010 13:06:08)
Офлайн