Статья Автор: Деникина Н.В., Деникин А.В.

Модуль ipaddress (python)

Модуль ipaddress (python)

Для решения задач, связанных с анализом ip адресов можно использовать функции ip_address() и ip_network(), размещенные в модуле ipaddress.
 

Создание IP адреса
С помощью функции ip_address() можно создать объект IP-адреса. В качестве аргумента функции мы указываем строку, в которой записано значение IP-адреса.

Функция ip_address() возвращает объект ipaddress.IPv4Address
 


Получение двоичной записи IP-адреса

 IP-адрес можно перевести в десятичное число, а затем с помощью функции bin()[2:] получить его двоичную запись ([2:] необходимо нам, чтобы отбросить у числа префикс двоичного числа 0b).
С помощью функции zfill(32)необходимо добавить к IP-адресу незначащие нули, чтобы он состоял из 32 двоичных цифр.



Создание сети

Функция ip_network() создает объект сети. Каждая сеть задаётся IP-адресом и маской сети, поэтому в качестве аргумента функции указывается строка, содержащая IP-адрес сети и маску разделённые /. Маска может указываться либо полной записью, либо профиксной (указанием числа единиц в маске).



Перебор IP-адресов сети

Перебрать все IP-адреса сети можно пройдясь в цикле по объекту сети.



Создание адреса сети по IP-адресу узла и маске

Используя ip-адресс и маску подсети можно создать адрес сети. Для этого в функцию ip_network() необходимо передать строку, содержащую IP-адрес узла и маску разделённые символом /. Через запятую вторым аргументом необходимо указать число 0 (или параметр strict=False)

Второй параметр, установленный в 0 или False, указывает на то, что функция не будет проверять маску на соответствие стандартам. То есть, если в адресе хоста есть единичные биты в тех позициях, где в маске стоят нули (что не соответствует стандартам), то в этом случае не будет вызвано исключение (программа не завершит свою работу аварийно). Неправильные биты обнулятся и будет создан объект сети.




Принадлежность адреса сети

Чтобы определить принадлежит ли IP-адрес сети используйте оператор принадлежности in.



Функция hosts() возвращает итератор, который позволяет перебирать все хосты (IP-адреса) внутри заданной сети, исключая сетевой и широковещательный адрес.


Можно также узнать количество узлов и IP-адресов, принадлежащих сети.  Обратите внимание, что количество узлов всегда будет на два меньше, чем количество IP-адресов. Так как адрес сети и широковещательный адрес не могут выступать в качестве адреса узла.


Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать