Crosspost:
https://docs.google.com/document/pub?id=1bVVnWh3V5d6V-THz6lWf1yAuzWAwhVZSYDJflSPOiSo У всех найденных библиотек очень плохо с документацией.
netsnmp
Поставляется вместе с пакетом net-snmp (библиотекой и утилитами).
Проверенная версия: 1.0a1 (соответствует версии net-snmp 5.7.2)
Текущую версию можно выяснить тут:
http://www.net-snmp.org/about/ChangeLog.html
Источник:
http://www.net-snmp.org/
Подробнее:
http://www.net-snmp.org/wiki/index.php/Python_Bindings
Полезная статья:
http://www.rootninja.com/how-to-write-simple-netsnmp-apps-in-python/ Плюсы:
- Использует проверенную (и в большинстве случаев используемую в качестве “системной” библиотеку).
- Поддерживает SNMPv3.
Минусы: Довольно бедный интерфейс:
- Только синхронный интерфейс.
- Только простейшие функции - get, getnext, set, walk.
- Нет возможности ресолвить именованные OID’ы (хотя их можно использовать при запросах).
- Нет “серверного” интерфейса (ловить запросы или trap’ы).
pysnmp
Проверенная версия: 4.2.3
Текущую версию можно выяснить тут:
http://pypi.python.org/pypi/pysnmp/
Источник:
http://pysnmp.sourceforge.net/ Плюсы:
- Есть и серверный и клиентский интерфейс.
- Поддерживаются все версии SNMP (1-3).
- Есть ресолвинг именованных OID’в.
- Есть и синхронный и асинхронный интерфейсы.
- Не имеет проблем с переносимостью, поскольку написано на “чистом” python’е.
Минусы:
- Совершенно невнятная организация модулей библиотеки.
- Странное ограничение на ресолвинг - модуль нужно передавать отдельно (то есть самому разбивать по “::”, что особенно неудобно в местах куда хочется просто передать OID)
libsnmp
Проверенная версия: 4.2.3
Текущую версию можно выяснить тут:
http://pypi.python.org/pypi/libsnmp/
Источник:
http://www.seafelt.com/software/sources Плюсы:
- Достаточно прозрачный интерфейс.
- Асинхронный интерфейс.
- Вместо документации есть примеры скриптов (snmpget-v1, snmpget-v2, snmp-walk, traplistener, trapsender).
- Не имеет проблем с переносимостью, поскольку написано на “чистом” python’е.
Минусы:
- Сомнительная поддержка - сайт на который ссылается метаинформация не упоминает эту библиотеку вообще.
- Только асинхронный интерфейс.
- Нет поддержки SNMPv3.
- Нет поддержки ресолвинга OID’ов ни в виде отдельного интерфейса, ни при вызове других функций.
Другие
Источник:
http://pypi.python.org/pypi?%3Aaction=search&term=snmp&submit=search Есть ещё много библиотек на которые у меня не хватило дыхания. Возможно там и скрываются жемчужины проектирования и реализации, но исследование “неудачников” я отложу до следующего раза...