[devel] A: pyroute2 — python netlink interface

Peter V. Saveliev peet на altlinux.org
Вс Май 5 20:53:38 MSK 2013


…

Краткий анонс.

В связи с некоторым проектом снова поднял тему netlink, и переписал
библиотеку на pure python, без ctypes, т.о. избежав проблем с selinux.
Может работать в средах вроде RHEL «искаропки», не требуя сторонних
библиотек и не вылезая за рамки стандартной модели питона.

В общем, библиотека работы с netlink. На данный момент:

* decoder/encoder сообщений netlink, работает в обе стороны
* простой формат описания сообщений, доступен даже младшеклассникам
* возможность удалённой работы с netlink, с аутентификацией по
сертификатам TLS/SSL (SASL планируется)

Для rtnetlink:

* адреса, интерфейсы, ARP-записи и маршруты, остальное в планах
* транзакционная база данных, интерфейсы как контекст-менеджеры («with»)


Примеры:

…

from pyroute2 import iproute
ip = iproute()
ip.get_links()

…

from pyroute2 import ipdb
ip = ipdb()
ip.tap0.address = '00:11:22:33:44:55'
ip.tap0.ipaddr.add(('10.0.0.1', 24))
ip.tap0.ipaddr.add(('10.0.0.2', 24))
ip.tap0.ifname = 'vpn'
ip.tap0.commit()
# now it is «vpn»:
ip.vpn.up()
ip.vpn.commit()

…

Больше примеров в документации.

ipdb работает на событиях netlink, т.е. база данных в постоянной
синхронизации с актуальными настройками ip-стека, вне зависимости от
того, что используется для настройки — хоть etcnet, хоть network
manager, хоть самодельные скрипты, использующие ifconfig.

До конца месяца планирую закинуть это в федору, как более-менее
внутренние API устаканятся. Если кому пригодится в Сизифе — пинайте,
туда выложу тоже. Если кто сам захочет выложить, тогда могу нужным
образом подогнать репозитарий к схеме сборки.

Ссылки:

home: https://github.com/svinota/pyroute2
bugs: https://github.com/svinota/pyroute2/issues
pypi: https://pypi.python.org/pypi/pyroute2
docs: http://peet.spb.ru/pyroute2/

-- 
Peter V. Saveliev


Подробная информация о списке рассылки Devel