[sisyphus] I: netlink python lib (rtnetlink, taskstats, ipq...)

Peter V. Saveliev peet на altlinux.ru
Чт Июл 7 13:59:10 UTC 2011


...

Только что отправил в Сизиф python-module-cxnet 0.7.1-alt4, скоро доползёт.

Основной упор на данный момент делается на библиотеки rtnl и iproute2,
так как taskstats вроде бы заработал как надо.

Ударный туториал по iproute2, как пример использования:

8<-----------------------------------------------------------------------
$ sudo apt-get install python-module-cxnet
$ vim ./ifcfg.py
#!/usr/bin/env python

from __future__ import print_function
from cxnet.netlink.iproute2 import iproute2

links = iproute2.get_all_links()

print("%-16s%-16s%-16s%-16s\n" % ("name","type","state","wireless"))
[ print("%-16s%-16s%-16s%-16s" % \
	(x["dev"],x["link_type"],x["state"],x["wireless"])) \
	for x in links ]

8<-----------------------------------------------------------------------

$ python ./ifcfg.py
name            type            state           wireless

lo              LOOPBACK        UNKNOWN         None
eth0            ETHER           UP              None
wlan0           ETHER           DOWN            wlan0
br0             ETHER           UNKNOWN         None
br0.100         ETHER           UP              None
br0.101         ETHER           UP              None

8<-----------------------------------------------------------------------

...

Про taskstats уже вроде писал, тоже полезная вещь -- сборка информации
по процессам, котороя информация не всегда и не вся доступна через
/proc. Как по живым, так и подписка на события завершения процесса. Для
системного профилирования.

...

Какие появились полезняшки в cxnet.netlink.rtnl:

* работает на питоне от 2.5 до 2.7, проверял на Maemo на n810 (ARM) --
всё тоже летает (впрочем, для Сизифа это оффтопег, там по определению
работает)
* больше атрибутов распознаёт парсер теперь, нераспознанные атрибуты
перечисляются в ответе. Для интерфейсов, например, распознаётся
link_type, operation state
* наступив на горло принципиальности, задействовал ioctl, теперь
библиотека может проверять интерфейсы на наличие wireless-расширений
* появилась возможность добавлять/удалять адреса через rtnetlink (ну,
если есть права :)
* кэширование ответов в iproute2, оптимизация по скорости

...


Ну там много ещё чего.

...

Что дальше? А дальше я потихоньку точу виртуальные файловые системы,
которые представляют различные объекты netlink в виде файлов с доступом
как на read-only, так и на read-write. Первая альфа (как раз taskstats и
iproute2) пойдёт в Сизиф на выходных. Живой (хотя и скучноватый, без
туннелей, wifi и прочих ppp -- но что поделать, сервер-таки) пример
такой ФС можно посмотреть тут: http://vfs.peet.spb.ru/

...

Если нужно, пинайте, попробую или заняться документацией, или приму
патчи на эту тему. Пока упор идёт не на документирование, а на
разработку, что неверно, но в данном случае неизбежно. По необходимости
могу пересмотреть приоритеты.

-- 
Peter V. Saveliev


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