Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 22, 2010 18:11:12

evilempirer
От:
Зарегистрирован: 2010-06-07
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с алгоритмом

На вводе получаем диапазон ip адресов вида 10.10.20.0-10.10.30.0 или подобного (главное что первый всегда меньше последнего), необходимо нагенерить все ip адреса в этом промежутке. У меня пока получается очень наворочено и неудобоваримо. Может кто подкинет мысль как это сделать изящно используя python way.



Офлайн

#2 Окт. 22, 2010 18:53:14

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Помогите с алгоритмом

IP Address Manipulation Library: http://www.python.org/dev/peps/pep-3144/



Офлайн

#3 Окт. 22, 2010 19:04:56

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Помогите с алгоритмом

както писал для себя преобразование 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)

Офлайн

#4 Окт. 22, 2010 20:05:49

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с алгоритмом

Lexander
IP Address Manipulation Library: http://www.python.org/dev/peps/pep-3144/
Гхм… А оно для питона 2.x есть?

По сабжу. Я тут маялся как-то таким. Вот - http://www.python.su/forum/viewtopic.php?id=6238
Суть проблемы не совсем та что у вас, но примеры те что надо :)



Офлайн

#5 Окт. 25, 2010 10:55:11

evilempirer
От:
Зарегистрирован: 2010-06-07
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с алгоритмом

Да бы не плодить темы, есть строка ip = ‘10.10.10.0’ надо из нее сделать строку ‘10.10.11.0’ то есть 3 октет +1



Офлайн

#6 Окт. 25, 2010 13:04:34

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с алгоритмом

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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version