2016-10-03 2 views
0
  1. Я сконфигурированных компилятор, где искать ASN1 MIBs следующим образом:PySNMP - по умолчанию местоположение скомпилированных MIBs

    compiler.addMibCompiler(mibBuilder, sources=['/usr/share/snmp/mibs']) 
    
  2. Затем используется getCmd() как:

    errorIndication, errorStatus, errorIndex, varBinds = next(
        getCmd(SnmpEngine(), 
          CommunityData('private', mpModel=0), 
          UdpTransportTarget(('192.168.56.20', '161')), 
          ContextData(), 
          ObjectType(ObjectIdentity('VLAN-MIB','InterfaceMode',3)))) 
    
  3. Я нахожу VLAN-MIB.py в $HOME/.pysnmp/mibs, и все работает нормально.

Но я хотел изменить расположение MINs asn1 в свою локальную папку. Скажи:

/home/krish/mibs 

Я пробовал 2 различными способами:

  1. Это:

    compiler.addMibCompiler(mibBuilder, sources=['/home/krish/mibs'])` 
    
  2. Это:

    errorIndication, errorStatus, errorIndex, varBinds = next(
        getCmd(SnmpEngine(), 
          CommunityData('private', mpModel=0), 
          UdpTransportTarget(('192.168.56.20', '161')), 
          ContextData(), 
          ObjectType(ObjectIdentity('VLAN-MIB','InterfaceMode',3).addAsn1MibSource('/home/krish/mibs'))) 
    ) 
    

В любом случае, я получаю ошибку, в которой говорится, что VLAN-MIB не найден.

Но если я скомпилировать его сам в автономном режиме и поместить VLAN-MIB.py файл в указанной директории как:

errorIndication, errorStatus, errorIndex, varBinds = next(
    getCmd(SnmpEngine(), 
      CommunityData('private', mpModel=0), 
      UdpTransportTarget(('192.168.56.20', '161')), 
      ContextData(), 
      ObjectType(ObjectIdentity('VLAN-MIB','InterfaceMode',3).addMibSource('/home/krish/mibs'))) 
) 

он работал отлично.

Итак, мой вопрос заключается в том, где скомпилированные MIB (.py) размещаются после того, как PySMI автоматически анализирует MIB-адреса asn1? Я не нашел их по умолчанию $HOME/.pysnmp/mibs в приведенном выше случае.

и как сообщить pysnmp/pysmi, где сохранить автоматически сгенерированный файл .py.

и я не хочу использовать addMibSource() в каждом вызове get/set. addMibCompiler() работал отлично только для/usr/share/snmp/mibs, а не для пользовательских каталогов.

Подумайте, что мне здесь не хватает. Цените помощь.

+0

Пожалуйста, укажите версию pysnmp вы используете? –

+0

pysnmp version 4.3.2 – krish

ответ

0

Мои догадки:

  • Это то, что ASN.1 MIB не может быть найден, а не его скомпилированный аналог VLAN-MIB.py
  • Это не то, что ASN.1 VLAN-MIB не может быть найден, но какой-то другой ASN.1 MIB, на котором VLAN-MIB зависит

Что именно говорит ошибка pysnmp?

Поскольку вы работаете с MIB ASN.1, например. не pysmi предварительно скомпилированные, вы должны использовать .addMibCompiler или .addAsn1MibSource для настройки пути поиска.

Несмотря на свое название, .addMibCompiler/.addAsn1MibSource не добавить путь, но установить новый один (ы) для данного экземпляра MibBuilder. Таким образом, вы всегда должны указывать все источники MIB, которые могут потребоваться вашему приложению для MIB, на которые вы ссылаетесь, и для MIB, импортированных теми, на которые вы ссылаетесь (и это происходит рекурсивно).

Вы можете передать параметр ключевого слова destination в .addMibCompiler/.addAsn1MibSource функции для изменения скомпилированного местоположения MIB.

Сказав, что я предлагаю попробовать:

addMibCompiler(mibBuilder, sources=['/home/krish/mibs', '/usr/share/snmp/mibs']) 

или

ObjectType(ObjectIdentity('VLAN-MIB','InterfaceMode',3).addAsn1MibSource('/home/krish/mibs', '/usr/share/snmp/mibs'))) 

В качестве альтернативы, если вы хотите придерживаться только /home/krish/mibs, попробуйте скопировать все необходимые MIBs в этот каталог. Импортировать ошибки из отчета pysnmp в отсутствие зависимостей.

Наконец, есть большая коллекция различных MIBs он-лайн вы можете настроить pysnmp для автоматической загрузки и использования:

addMibCompiler(mibBuilder, sources=['http://mibs.snmplabs.com/asn1/@[email protected]'], destination='/home/krish/mibs') 
+0

Вы догадываетесь о «некоторой другой ASN.1 MIB, от которой зависит VLAN-MIB». Большое спасибо. Ценить это. – krish

Смежные вопросы