Извлечь префикс ipv6 в Python

Учитывая двоичное или строковое представление адреса IPv6 и длину его префикса, каков наилучший способ извлечь префикс в Python?

Есть ли библиотека, которая сделала бы это для меня, или я должен был бы:

  1. преобразовать адрес из строки в int (inet_ntop)
  2. Замаскировать префикс
  3. Преобразовать префикс обратно в двоичный
  4. Преобразовать двоичный файл в строку (inet_ntop)
11.12.2008 20:33:39
2 ОТВЕТА
РЕШЕНИЕ

См. Http://code.google.com/p/ipaddr-py/.

С этим вы можете сделать

py> p=ipaddr.IPv6("2001:888:2000:d::a2")
py> p.SetPrefix(64)
py> p
IPv6('2001:888:2000:d::a2/64')
py> p.network_ext
'2001:888:2000:d::'

и т.п.

2
11.12.2008 21:21:41

Использование библиотеки python netaddr :

>>> from netaddr.ip import IPNetwork, IPAddress
>>> IPNetwork('2001:888:2000:d::a2/64').network
2001:888:2000:d::
0
5.10.2011 12:10:32