ipaddress — Библиотека для работы с IPv4/IPv6
Исходный код: Lib/ipaddress.py
ipaddress предоставляет возможности для создания, обработки и работы с адресами и сетями IPv4 и IPv6.
Функции и классы в этом модуле упрощают выполнение различных задач, связанных с IP-адресами, включая проверку того, находятся ли два хоста в одной подсети, итерацию по всем хостам в определенной подсети, проверку того, является ли строка допустимым IP-адресом или определением сети и т. д.
Это полная справка по API модуля — для обзора и введения см. Введение в модуль ipaddress.
Введено в версии 3.3.
1. Функции-фабрики для удобства
Модуль ipaddress предоставляет функции-фабрики для удобного создания IP-адресов, сетей и интерфейсов:
-
ipaddress.ip_address(address) -
Возвращает объект
IPv4AddressилиIPv6Addressв зависимости от переданного в качестве аргумента IP-адреса. Можно указать как IPv4, так и IPv6 адреса; целые числа меньше 2**32 по умолчанию интерпретируются как IPv4. Если address не является корректным IPv4 или IPv6 адресом, генерируется исключениеValueError.>>> ipaddress.ip_address('192.168.0.1') IPv4Address('192.168.0.1') >>> ipaddress.ip_address('2001:db8::') IPv6Address('2001:db8::')
-
ipaddress.ip_network(address, strict=True) -
Возвращает объект
IPv4NetworkилиIPv6Networkв зависимости от переданного в качестве аргумента IP-адреса. address — это строка или целое число, представляющее IP-сеть. Можно указать как IPv4, так и IPv6 сети; целые числа меньше 2**32 по умолчанию интерпретируются как IPv4. strict передаётся в конструкторIPv4NetworkилиIPv6Network. Если address не является корректным IPv4 или IPv6 адресом или биты хоста установлены в сети, генерируется исключениеValueError.>>> ipaddress.ip_network('192.168.0.0/28') IPv4Network('192.168.0.0/28')
-
ipaddress.ip_interface(address) -
Возвращает объект
IPv4InterfaceилиIPv6Interfaceв зависимости от переданного в качестве аргумента IP-адреса. address — это строка или целое число, представляющее IP-адрес. Можно указать как IPv4, так и IPv6 адреса; целые числа меньше 2**32 по умолчанию интерпретируются как IPv4. Если address не является корректным IPv4 или IPv6 адресом, генерируется исключениеValueError.
Одним из недостатков этих удобных функций является необходимость обработки как IPv4, так и IPv6 форматов, что означает, что сообщения об ошибках содержат минимальную информацию о точной ошибке, так как функции не знают, какой формат IPv4 или IPv6 был предназначен. Более подробную информацию об ошибках можно получить, вызвав соответствующие конструкторы специфичные для версии.
2. IP-адреса
2.1. Объекты адресов
Объекты IPv4Address и IPv6Address обладают многими общими атрибутами. Некоторые атрибуты, имеющие смысл только для IPv6-адресов, также реализованы объектами IPv4Address, чтобы облегчить написание кода, который корректно обрабатывает оба версии IP.
-
class ipaddress.IPv4Address(address) -
Создаёт IPv4 адрес. Если address не является корректным IPv4 адресом, генерируется исключение
AddressValueError.Допустимый IPv4 адрес:
- Строка в десятично-точечной нотации, состоящая из четырёх десятичных целых чисел в диапазоне от 0 до 255, разделённых точками (например,
192.168.0.1). Каждое целое число представляет октет (байт) в адресе. Ведущие нули допускаются только для значений меньше 8 (так как нет неоднозначности между десятичным и восьмеричным интерпретациями таких строк). - Целое число, которое помещается в 32 бита.
- Целое число, упакованное в объект
bytesдлиной 4 (самый старший октет первым).
>>> ipaddress.IPv4Address('192.168.0.1') IPv4Address('192.168.0.1') >>> ipaddress.IPv4Address(3232235521) IPv4Address('192.168.0.1') >>> ipaddress.IPv4Address(b'\xC0\xA8\x00\x01') IPv4Address('192.168.0.1')-
version -
Номер версии:
4для IPv4,6для IPv6.
-
max_prefixlen -
Общее количество битов в представлении адреса для этой версии:
32для IPv4,128для IPv6.Префикс определяет количество ведущих битов в адресе, которые сравниваются, чтобы определить, является ли адрес частью сети.
-
compressed
-
exploded -
Строковое представление в десятично-точечной нотации. Ведущие нули никогда не включаются в представление.
Так как IPv4 не определяет сокращённую нотацию для адресов с октетами, установленными в ноль, эти два атрибута всегда совпадают с
str(addr)для IPv4-адресов. Предоставление этих атрибутов упрощает написание кода отображения, который может обрабатывать как IPv4, так и IPv6 адреса.
-
packed -
Бинарное представление этого адреса — объект
bytesсоответствующей длины (самый старший октет первым). Это 4 байта для IPv4 и 16 байт для IPv6.
-
reverse_pointer -
Имя обратного DNS PTR-записи для IP-адреса, например:
>>> ipaddress.ip_address("127.0.0.1").reverse_pointer '1.0.0.127.in-addr.arpa' >>> ipaddress.ip_address("2001:db8::1").reverse_pointer '1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa'Это имя, которое можно использовать для выполнения запроса PTR, а не сам решенный хост.
Новое в версии 3.5.
-
is_multicast -
Trueесли адрес зарезервирован для использования в мультивещании. См. RFC 3171 (для IPv4) или RFC 2373 (для IPv6).
-
is_private -
Trueесли адрес выделен для частных сетей. См. iana-ipv4-special-registry (для IPv4) или iana-ipv6-special-registry (для IPv6).
-
is_global -
Trueесли адрес выделен для публичных сетей. См. iana-ipv4-special-registry (для IPv4) или iana-ipv6-special-registry (для IPv6).Новое в версии 3.4.
-
is_reserved -
Trueесли адрес зарезервирован IETF.
-
is_link_local -
Trueесли адрес зарезервирован для локальной связи. См. RFC 3927.
- Строка в десятично-точечной нотации, состоящая из четырёх десятичных целых чисел в диапазоне от 0 до 255, разделённых точками (например,
-
class ipaddress.IPv6Address(address) -
Создайте адрес IPv6. Если address не является допустимым адресом IPv6, генерируется исключение
AddressValueError.Следующее является допустимым адресом IPv6:
- Строка, состоящая из восьми групп по четыре шестнадцатеричных цифры, каждая группа представляет 16 бит. Группы разделены двоеточиями. Это описывает развёрнутую (длинную) запись. Строка также может быть сжатой (короткой) записью различными способами. Подробности см. в RFC 4291. Например,
"0000:0000:0000:0000:0000:0abc:0007:0def"может быть сжата до"::abc:7:def". - Целое число, которое помещается в 128 бит.
- Целое число, упакованное в объект
bytesдлиной 16 байт, в формате big-endian.
>>> ipaddress.IPv6Address('2001:db8::1000') IPv6Address('2001:db8::1000')-
compressed
Короткая форма представления адреса, с опущенными ведущими нулями в группах и сжатыми в одну пустую группу самыми длинными последовательностями групп, состоящих целиком из нулей.
Это также значение, возвращаемое
str(addr)для адресов IPv6.-
exploded
Длинная форма представления адреса, с включёнными всеми ведущими нулями и группами, состоящими целиком из нулей.
Для следующих атрибутов см. соответствующую документацию класса
IPv4Address:-
packed
-
reverse_pointer
-
version
-
max_prefixlen
-
is_multicast
-
is_private
-
is_global
-
is_unspecified
-
is_reserved
-
is_loopback
-
is_link_local -
Добавлено в версии 3.4: is_global
-
is_site_local -
Trueесли адрес зарезервирован для использования в локальной сети. Обратите внимание, что адресное пространство локальной сети устарело согласно RFC 3879. Используйтеis_privateдля проверки, находится ли этот адрес в пространстве уникальных локальных адресов, как определено в RFC 4193.
-
ipv4_mapped -
Для адресов, которые кажутся адресами IPv4, сопоставленными IPv6 (начинающимися с
::FFFF/96), это свойство будет сообщать встроенный адрес IPv4. Для любого другого адреса это свойство будетNone.
-
sixtofour -
Для адресов, которые кажутся адресами 6to4 (начинающимися с
2002::/16) согласно RFC 3056, это свойство будет сообщать встроенный адрес IPv4. Для любого другого адреса это свойство будетNone.
-
teredo -
Для адресов, которые кажутся адресами Teredo (начинающимися с
2001::/32) согласно RFC 4380, это свойство будет сообщать встроенную пару адресов(server, client)IP. Для любого другого адреса это свойство будетNone.
- Строка, состоящая из восьми групп по четыре шестнадцатеричных цифры, каждая группа представляет 16 бит. Группы разделены двоеточиями. Это описывает развёрнутую (длинную) запись. Строка также может быть сжатой (короткой) записью различными способами. Подробности см. в RFC 4291. Например,
2.2. Преобразование в строки и целые числа
Для взаимодействия с сетевыми интерфейсами, такими как модуль socket, адреса должны быть преобразованы в строки или целые числа. Это обрабатывается с помощью встроенных функций str() и int():
>>> str(ipaddress.IPv4Address('192.168.0.1'))
'192.168.0.1'
>>> int(ipaddress.IPv4Address('192.168.0.1'))
3232235521
>>> str(ipaddress.IPv6Address('::1'))
'::1'
>>> int(ipaddress.IPv6Address('::1'))
1
2.3. Операторы
Объекты адресов поддерживают некоторые операторы. За исключением случаев, когда об этом сказано отдельно, операторы могут применяться только к совместимым объектам (например, IPv4 с IPv4, IPv6 с IPv6).
2.3.1. Операторы сравнения
Объекты адресов могут сравниваться с обычным набором операторов сравнения. Некоторые примеры:
>>> IPv4Address('127.0.0.2') > IPv4Address('127.0.0.1')
True
>>> IPv4Address('127.0.0.2') == IPv4Address('127.0.0.1')
False
>>> IPv4Address('127.0.0.2') != IPv4Address('127.0.0.1')
True
2.3.2. Арифметические операторы
Целые числа могут быть добавлены к или вычтены из объектов адресов. Некоторые примеры:
>>> IPv4Address('127.0.0.2') + 3
IPv4Address('127.0.0.5')
>>> IPv4Address('127.0.0.2') - 3
IPv4Address('126.255.255.255')
>>> IPv4Address('255.255.255.255') + 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ipaddress.AddressValueError: 4294967296 (>= 2**32) is not permitted as an IPv4 address
3. Определения IP-сетей
Объекты IPv4Network и IPv6Network предоставляют механизм для определения и проверки определений IP-сетей. Определение сети состоит из маски и адреса сети, и таким образом определяет диапазон адресов IP, которые равны адресу сети при маскировании (побитовое И) с маской. Например, определение сети с маской 255.255.255.0 и адресом сети 192.168.1.0 состоит из адресов IP в диапазоне от 192.168.1.0 до 192.168.1.255.
3.1. Префикс, маска сети и маска хоста
Существует несколько эквивалентных способов задания масок IP-сети. Префикс /<nbits> — это обозначение того, сколько старших битов установлено в маске сети. Маска сети — это адрес IP с некоторым количеством установленных старших битов. Таким образом, префикс /24 эквивалентен маске сети 255.255.255.0 в IPv4 или ffff:ff00:: в IPv6. Кроме того, маска хоста — это логическое отрицание маски сети и иногда используется (например, в списках управления доступом Cisco) для обозначения маски сети. Маска хоста, эквивалентная /24 в IPv4, равна 0.0.0.255.
3.2. Объекты сети
Все атрибуты, реализованные объектами адресов, реализованы и объектами сетей. Кроме того, объекты сетей реализуют дополнительные атрибуты. Все они общие для IPv4Network и IPv6Network, поэтому для избежания дублирования они документированы только для IPv4Network.
-
class ipaddress.IPv4Network(address, strict=True) -
Создайте определение сети IPv4. address может быть одним из следующих:
-
Строка, состоящая из IP-адреса и необязательной маски, разделённых косой чертой (
/). IP-адрес — это адрес сети, а маска может быть либо одиночным числом, что означает префикс, либо строковым представлением IPv4-адреса. Если это последнее, маска интерпретируется как маска сети, если она начинается с ненулевого поля, или как маска хоста, если она начинается с нулевого поля. Если маска не указана, она считается/32.Например, следующие спецификации address эквивалентны:
192.168.1.0/24,192.168.1.0/255.255.255.0и192.168.1.0/0.0.0.255. - Целое число, которое помещается в 32 бита. Это эквивалентно сети с единственным адресом, где адрес сети — address, а маска —
/32. - Целое число, упакованное в объект
bytesдлиной 4 байта, в формате big-endian. Интерпретация аналогична целому числу address. - Двухэлементная кортеж из описания адреса и маски сети, где описание адреса — это либо строка, целое число 32 бит, упакованное целое число 4 байта или существующий объект IPv4Address; а маска сети — либо целое число, представляющее длину префикса (например,
24) или строка, представляющая маску префикса (например,255.255.255.0).
AddressValueErrorгенерируется, если address не является допустимым IPv4-адресом.NetmaskValueErrorгенерируется, если маска не является допустимой для IPv4-адреса.Если strict
Trueи биты хоста установлены в предоставленном адресе, генерируетсяValueError. В противном случае биты хоста маскируются для определения соответствующего адреса сети.Если не указано иное, все методы сети, принимающие другие объекты сети/адреса, будут генерировать
TypeError, если версия IP аргумента несовместима сselfИзменено в версии 3.5: Добавлен двухэлементный кортеж в качестве параметра конструктора address.
-
version
-
max_prefixlen -
Обратитесь к соответствующей документации атрибута в
IPv4Address
-
is_multicast
-
is_private
-
is_unspecified
-
is_reserved
-
is_loopback
-
is_link_local -
Эти атрибуты истинны для всей сети, если они истинны как для адреса сети, так и для адреса широковещательной передачи.
-
network_address -
Адрес сети. Адрес сети и длина префикса вместе уникально определяют сеть.
-
broadcast_address -
Адрес широковещательной передачи для сети. Пакеты, отправленные по адресу широковещательной передачи, должны быть получены каждым узлом в сети.
-
hostmask -
Маска хоста в виде строки.
-
with_prefixlen
-
compressed
-
exploded -
Строковое представление сети с маской в префиксной нотации.
with_prefixlenиcompressedвсегда такие же, какstr(network).explodedиспользует развернутую форму адреса сети.
-
with_netmask -
Строковое представление сети с маской в нотации маски сети.
-
with_hostmask -
Строковое представление сети с маской в нотации маски хоста.
-
num_addresses -
Общее количество адресов в сети.
-
prefixlen -
Длина префикса сети в битах.
-
hosts() -
Возвращает итератор по используемым хостам в сети. Используемые хосты — это все IP-адреса, принадлежащие сети, за исключением адреса самой сети и адреса широковещательной передачи сети.
>>> list(ip_network('192.0.2.0/29').hosts()) #doctest: +NORMALIZE_WHITESPACE [IPv4Address('192.0.2.1'), IPv4Address('192.0.2.2'), IPv4Address('192.0.2.3'), IPv4Address('192.0.2.4'), IPv4Address('192.0.2.5'), IPv4Address('192.0.2.6')]
-
overlaps(other) -
Trueесли эта сеть частично или полностью содержится в other или other полностью содержится в этой сети.
-
address_exclude(network) -
Вычисляет определения сетей, полученные в результате удаления заданной сети из этой. Возвращает итератор объектов сети. Генерирует
ValueError, если network не полностью содержится в этой сети.>>> n1 = ip_network('192.0.2.0/28') >>> n2 = ip_network('192.0.2.1/32') >>> list(n1.address_exclude(n2)) #doctest: +NORMALIZE_WHITESPACE [IPv4Network('192.0.2.8/29'), IPv4Network('192.0.2.4/30'), IPv4Network('192.0.2.2/31'), IPv4Network('192.0.2.0/32')]
-
subnets(prefixlen_diff=1, new_prefix=None) -
Подсети, которые объединяются, чтобы сформировать текущее определение сети, в зависимости от значений аргументов. prefixlen_diff — это величина, на которую должна увеличиться длина нашего префикса. new_prefix — это желаемый новый префикс подсетей; он должен быть больше нашего префикса. Должен быть задан только один из prefixlen_diff и new_prefix. Возвращает итератор объектов сети.
>>> list(ip_network('192.0.2.0/24').subnets()) [IPv4Network('192.0.2.0/25'), IPv4Network('192.0.2.128/25')] >>> list(ip_network('192.0.2.0/24').subnets(prefixlen_diff=2)) #doctest: +NORMALIZE_WHITESPACE [IPv4Network('192.0.2.0/26'), IPv4Network('192.0.2.64/26'), IPv4Network('192.0.2.128/26'), IPv4Network('192.0.2.192/26')] >>> list(ip_network('192.0.2.0/24').subnets(new_prefix=26)) #doctest: +NORMALIZE_WHITESPACE [IPv4Network('192.0.2.0/26'), IPv4Network('192.0.2.64/26'), IPv4Network('192.0.2.128/26'), IPv4Network('192.0.2.192/26')] >>> list(ip_network('192.0.2.0/24').subnets(new_prefix=23)) Traceback (most recent call last): File "<stdin>", line 1, in <module> raise ValueError('new prefix must be longer') ValueError: new prefix must be longer >>> list(ip_network('192.0.2.0/24').subnets(new_prefix=25)) [IPv4Network('192.0.2.0/25'), IPv4Network('192.0.2.128/25')]
-
supernet(prefixlen_diff=1, new_prefix=None) -
Суперсеть, содержащая это определение сети, в зависимости от значений аргументов. prefixlen_diff — это величина, на которую должна уменьшиться длина нашего префикса. new_prefix — это желаемый новый префикс суперсети; он должен быть меньше нашего префикса. Должен быть задан только один из prefixlen_diff и new_prefix. Возвращает единственный объект сети.
>>> ip_network('192.0.2.0/24').supernet() IPv4Network('192.0.2.0/23') >>> ip_network('192.0.2.0/24').supernet(prefixlen_diff=2) IPv4Network('192.0.0.0/22') >>> ip_network('192.0.2.0/24').supernet(new_prefix=20) IPv4Network('192.0.0.0/20')
-
compare_networks(other) -
Сравнить эту сеть с other. В этом сравнении учитываются только адреса сети, биты хоста не учитываются. Возвращает либо
-1, либо0, либо1.>>> ip_network('192.0.2.1/32').compare_networks(ip_network('192.0.2.2/32')) -1 >>> ip_network('192.0.2.1/32').compare_networks(ip_network('192.0.2.0/32')) 1 >>> ip_network('192.0.2.1/32').compare_networks(ip_network('192.0.2.1/32')) 0
-
-
class ipaddress.IPv6Network(address, strict=True) -
Создать определение сети IPv6. address может быть одним из следующих:
-
Строка, содержащая IP-адрес и необязательную маску, разделённые слэшем (
/). IP-адрес — это адрес сети, а маска может быть либо одиночным числом, что означает префикс, либо строковым представлением IPv6-адреса. Если это последнее, маска интерпретируется как маска сети. Если маска не указана, она считается/128.Например, следующие спецификации address эквивалентны:
2001:db00::0/24и2001:db00::0/ffff:ff00::. - Целое число, помещающееся в 128 бит. Это эквивалентно сети с одним адресом, где адресом сети является address, а маска равна
/128. - Целое число, упакованное в объект
bytesдлиной 16 байт, в формате big-endian. Интерпретация аналогична целому числу address. - Двойка из описания адреса и маски сети, где описание адреса — это строка, 128-битовое целое число, 16-байтовое упакованное целое число или существующий объект IPv6Address; и маска сети — целое число, представляющее длину префикса.
Если address не является допустимым IPv6-адресом, возникает
AddressValueError. Если маска не является допустимой для IPv6-адреса, возникаетNetmaskValueError.Если strict —
Trueи биты хоста установлены в предоставленном адресе, то возникаетValueError. В противном случае биты хоста маскируются для определения соответствующего адреса сети.Изменено в версии 3.5: Добавлен двухадресной формат для параметра конструктора address.
-
version
-
max_prefixlen
-
is_multicast
-
is_private
-
is_unspecified
-
is_reserved
-
is_loopback
-
is_link_local
-
network_address
-
broadcast_address
-
hostmask
-
with_prefixlen
-
compressed
-
exploded
-
with_netmask
-
with_hostmask
-
num_addresses
-
prefixlen
-
hosts()
-
overlaps(other)
-
address_exclude(network)
-
subnets(prefixlen_diff=1, new_prefix=None)
-
supernet(prefixlen_diff=1, new_prefix=None)
-
compare_networks(other) -
Обратитесь к соответствующей документации атрибута в
IPv4Network
-
is_site_local -
Этот атрибут имеет значение true для всей сети в целом, если он имеет значение true как для адреса сети, так и для адреса широковещательной передачи
-
3.3. Операторы
Объекты сетей поддерживают некоторые операторы. За исключением случаев, когда указано иначе, операторы могут применяться только к совместимым объектам (т.е. IPv4 с IPv4, IPv6 с IPv6).
3.3.1. Логические операторы
Объекты сетей могут сравниваться с обычным набором логических операторов, аналогично объектам адресов.
3.3.2. Итерация
Объекты сетей могут быть итерированы для перечисления всех адресов, принадлежащих сети. Для итерации возвращаются все хосты, включая непригодные (для пригодных хостов используйте метод hosts()). Пример:
>>> for addr in IPv4Network('192.0.2.0/28'):
... addr
...
IPv4Address('192.0.2.0')
IPv4Address('192.0.2.1')
IPv4Address('192.0.2.2')
IPv4Address('192.0.2.3')
IPv4Address('192.0.2.4')
IPv4Address('192.0.2.5')
IPv4Address('192.0.2.6')
IPv4Address('192.0.2.7')
IPv4Address('192.0.2.8')
IPv4Address('192.0.2.9')
IPv4Address('192.0.2.10')
IPv4Address('192.0.2.11')
IPv4Address('192.0.2.12')
IPv4Address('192.0.2.13')
IPv4Address('192.0.2.14')
IPv4Address('192.0.2.15')
3.3.3. Сети как контейнеры адресов
Объекты сетей могут выступать в качестве контейнеров адресов. Некоторые примеры:
>>> IPv4Network('192.0.2.0/28')[0]
IPv4Address('192.0.2.0')
>>> IPv4Network('192.0.2.0/28')[15]
IPv4Address('192.0.2.15')
>>> IPv4Address('192.0.2.6') in IPv4Network('192.0.2.0/28')
True
>>> IPv4Address('192.0.3.6') in IPv4Network('192.0.2.0/28')
False
4. Объекты интерфейсов
-
class ipaddress.IPv4Interface(address) -
Создать IPv4 интерфейс. Значение address такое же, как в конструкторе
IPv4Network, за исключением того, что произвольные адреса хостов всегда принимаются.IPv4Interfaceявляется подклассомIPv4Address, поэтому он наследует все атрибуты этого класса. Кроме того, доступны следующие атрибуты:-
ip -
Адрес (
IPv4Address) без информации о сети.>>> interface = IPv4Interface('192.0.2.5/24') >>> interface.ip IPv4Address('192.0.2.5')
-
network -
Сеть (
IPv4Network), к которой принадлежит этот интерфейс.>>> interface = IPv4Interface('192.0.2.5/24') >>> interface.network IPv4Network('192.0.2.0/24')
-
with_prefixlen -
Строковое представление интерфейса с маской в префиксной нотации.
>>> interface = IPv4Interface('192.0.2.5/24') >>> interface.with_prefixlen '192.0.2.5/24'
-
with_netmask -
Строковое представление интерфейса с сетью в качестве маски сети.
>>> interface = IPv4Interface('192.0.2.5/24') >>> interface.with_netmask '192.0.2.5/255.255.255.0'
-
with_hostmask -
Строковое представление интерфейса с сетью в качестве маски хоста.
>>> interface = IPv4Interface('192.0.2.5/24') >>> interface.with_hostmask '192.0.2.5/0.0.0.255'
-
-
class ipaddress.IPv6Interface(address) -
Создать IPv6 интерфейс. Значение address такое же, как в конструкторе
IPv6Network, за исключением того, что произвольные адреса хостов всегда принимаются.IPv6Interfaceявляется подклассомIPv6Address, поэтому он наследует все атрибуты этого класса. Кроме того, доступны следующие атрибуты:-
ip
-
network
-
with_prefixlen
-
with_netmask
-
with_hostmask -
Обратитесь к соответствующей документации атрибута в
IPv4Interface.
-
5. Другие функции уровня модуля
Модуль также предоставляет следующие функции уровня модуля:
-
ipaddress.v4_int_to_packed(address) -
Представляет адрес как 4 упакованных байта в сетевом порядке (big-endian). address — это целочисленное представление IPv4 IP-адреса. Если целое число отрицательное или слишком велико для IPv4 IP-адреса, возникает
ValueError.>>> ipaddress.ip_address(3221225985) IPv4Address('192.0.2.1') >>> ipaddress.v4_int_to_packed(3221225985) b'\xc0\x00\x02\x01'
-
ipaddress.v6_int_to_packed(address) -
Представляет адрес как 16 упакованных байтов в сетевом порядке (big-endian). address — это целочисленное представление IPv6 IP-адреса. Если целое число отрицательное или слишком велико для IPv6 IP-адреса, возникает
ValueError.
-
ipaddress.summarize_address_range(first, last) -
Возвращает итератор с обобщенным диапазоном сети, заданным начальным и конечным IP-адресами. first — это первый
IPv4AddressилиIPv6Addressв диапазоне, а last — это последнийIPv4AddressилиIPv6Addressв диапазоне. Если first или last не являются IP-адресами или не одного типа, генерируется исключениеTypeError. Если last не больше first или версия адреса first не равна 4 или 6, генерируется исключениеValueError.>>> [ipaddr for ipaddr in ipaddress.summarize_address_range( ... ipaddress.IPv4Address('192.0.2.0'), ... ipaddress.IPv4Address('192.0.2.130'))] [IPv4Network('192.0.2.0/25'), IPv4Network('192.0.2.128/31'), IPv4Network('192.0.2.130/32')]
-
ipaddress.collapse_addresses(addresses) -
Возвращает итератор объединенных
IPv4NetworkилиIPv6Networkобъектов. addresses — это итераторIPv4NetworkилиIPv6Networkобъектов. Если addresses содержит объекты смешанных версий, генерируется исключениеTypeError.>>> [ipaddr for ipaddr in ... ipaddress.collapse_addresses([ipaddress.IPv4Network('192.0.2.0/25'), ... ipaddress.IPv4Network('192.0.2.128/25')])] [IPv4Network('192.0.2.0/24')]
-
ipaddress.get_mixed_type_key(obj) -
Возвращает ключ, подходящий для сортировки сетей и адресов. Объекты Address и Network по умолчанию не сортируются; они фундаментально разные, поэтому выражение:
IPv4Address('192.0.2.0') <= IPv4Network('192.0.2.0/24')не имеет смысла. Однако бывают случаи, когда вы хотите, чтобы
ipaddressотсортировал их. В этом случае вы можете использовать эту функцию в качестве аргументаkeyкsorted().obj — это объект сети или адреса.
6. Пользовательские исключения
Для поддержки более подробного отчета об ошибках при создании экземпляров классов модуль определяет следующие исключения:
-
exception ipaddress.AddressValueError(ValueError) -
Любая ошибка значения, связанная с адресом.
-
exception ipaddress.NetmaskValueError(ValueError) -
Любая ошибка значения, связанная с маской сети.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.5/library/ipaddress.html