@Meksvinz

Почему не работает простейший пример из библиотеки easysnmp?

В общем решил я разобраться в SNMP протоколе. Что к чему и тд. Почитав немного теорию и поняв самые основы, решил поскорее приступить к практике на Python. Но что-то пошло не так: не работает даже простейший пример из официальной документации.
from easysnmp import Session

# Create an SNMP session to be used for all our requests
session = Session(hostname='localhost', community='public', version=2)

# You may retrieve an individual OID using an SNMP GET
location = session.get('sysLocation.0')

# You may also specify the OID as a tuple (name, index)
# Note: the index is specified as a string as it can be of other types than
# just a regular integer
contact = session.get(('sysContact', '0'))

# And of course, you may use the numeric OID too
description = session.get('.1.3.6.1.2.1.1.1.0')

# Set a variable using an SNMP SET
session.set('sysLocation.0', 'The SNMP Lab')

# Perform an SNMP walk
system_items = session.walk('system')

# Each returned item can be used normally as its related type (str or int)
# but also has several extended attributes with SNMP-specific information
for item in system_items:
    print '{oid}.{oid_index} {snmp_type} = {value}'.format(
        oid=item.oid,
        oid_index=item.oid_index,
        snmp_type=item.snmp_type,
        value=item.value
    )

И вот ошибка:
Traceback (most recent call last):
  File "/home/meksvinz/PycharmProjects/easysnmp/1.py", line 4, in <module>
    snmp_get('sysDescr.0', hostname='localhost', community='public', version=1)
  File "/home/meksvinz/projects/envs/snmp/lib/python3.7/site-packages/easysnmp/easy.py", line 22, in snmp_get
    return session.get(oids)
  File "/home/meksvinz/projects/envs/snmp/lib/python3.7/site-packages/easysnmp/session.py", line 315, in get
    interface.get(self, varlist)
SystemError: <built-in function get> returned NULL without setting an error


Скрипт запускал из виртуального окружения (кстати в IPython таже хрень).
Подскажите пожалуйста в чем причина такой ошибки. Сам разобраться никак не смог из-за катастрофически малого количества информации в сети.
  • Вопрос задан
  • 704 просмотра
Решения вопроса 1
fzfx
@fzfx
18,5 дм
snmpd установлен?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@nerosketch
Там ошибка совместимости с python3.7 на уровне C модуля. Искал как исправить это некоторое время назад, и получилось поправить. Патч лежит тут: https://github.com/kamakazikamikaze/easysnmp/pull/117
А установить поправленный для python3.7 можно тут: https://github.com/nerosketch/easysnmp.git.
pip install git+https://github.com/nerosketch/easysnmp.git
Ответ написан
Комментировать
@sekrett
Да, это ошибка интерпретатора, которая до сих пор не решена. Мы заметили, что если правильно указать все пароли и правильно выбрать алгоритмы на 3-й версии, то такой ошибки не будет. Поэтому проверяйте доступы. Библиотека работает, пользуемся в проде.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект