[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