Inicialmente busquei seguir os passos que o Tiago fez para um projeto anterior ao qual ele criou uma MIB específica para medição de grandezas elétricas e instalou o NET-SNMP na plataforma de microcontroladores da Digi International.
Para iniciar, o Thiago me passou a sua Máquina Virtual Linux Ubuntu que ele utilizou para fazer o projeto do SMNP com suporte a mib ENTITY-SENSOR-MIB na plataforma da Digi.
Primeiramente o Thiago baixou a versão os arquivos fontes do net-smnp no site:
http://www.net-snmp.org/
A versão que ele utilizou na época foi: net-snmp-5.7.1
Depois disso, ele baixou a versão 2 da ENTITY-SENSOR-MIB no site:
http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&step=2&mibName=ENTITY-SENSOR-MIB
Compilando o NET-SNMP com a ENTITY-SENSOR-MIB
O próximo passo foi executar a compilação da net-snmp-5.7.1 carregando a ENTITY-SENSOR-MIB através dos passos a seguir:
1) Descompacte o arquivo "net-snmp-5.7.1.tar.gz" baixado no site do NET-SMNP.
2) A partir da MIB que o Tiago baixou, ele gerou arquivos .c e .h. Esse processo ainda está meio obscuro na minha cabeça e o Tiago não soube explicar com clareza. Portanto, deixarei para detalhar esse processo depois, quando tiver bem compreendido. Por agora, o que precisarei modificar para nossa aplicação será apenas um arquivo desses gerados. Os arquivos estão na pasta "inserirMIB". O arquivo modificado pelo Tiago para o projeto passado (e que terei que alterar para o projeto atual...) foi o "entPhySensorTable_data_access.c". Em outros posts detalharei essas alterações.
3) Com esses arquivos gerados da ENTITY-SENSOR-MIB, os mesmos devem ser copiados para as subpastas do net-snmp-5.7.1 da seguinte forma:
- Coloque os arquivos pasta "net-snmp-5.7.1/mibs/":
- ENTITY-MIB.txt
- ENTITY-SENSOR-MIB.txt
- Coloque esses arquivos na pasta "net-snmp-5.7.1/agent/mibgroup/ENTITY-SENSOR-MIB/entPhySensorTable/":
- entPhySensorTable.c
- entPhySensorTable_data_get.c
- entPhySensorTable_data_set.h
- entPhySensorTable_interface.c
- entPhySensorTable_subagent.c
- entPhySensorTable_data_access.c
- entPhySensorTable_data_get.h
- entPhySensorTable_enums.h
- entPhySensorTable_interface.h
- entPhySensorTable_data_access.h
- entPhySensorTable_data_set.c
- entPhySensorTable.h
- entPhySensorTable_oids.h
- [CORREÇÃO] Crie um arquivo chamado "entPhySensorTable.h" na pasta "net-snmp-5.7.1/agent/mibgroup/" com as linhas:
- config_require(ENTITY-SENSOR-MIB/entPhySensorTable/entPhySensorTable)
- config_add_mib(ENTITY-SENSOR-MIB)
- [DESNECESSÁRIO]
Coloque os arquivos abaixo na pasta "net-snmp-5.7.1/agent/mibgroup/":
entPhySensorTable.h
entPhySensorTable_data_set.h
entPhySensorTable_data_get.h
entPhySensorTable_enums.h
entPhySensorTable_interface.h
entPhySensorTable_data_access.h
entPhySensorTable_oids.h
4) Na raiz da pasta "net-snmp-5.7.1/" crie uma subpasta (exemplo, "net-snmp-5.7.1/saida/");
5) Na raiz da pasta "net-snmp-5.7.1/" execute os comandos a seguir:
- ./configure --prefix=/<caminho absoluto>/net-snmp-5.7.1/saida --disable-embedded-perl --with-mib-modules="entPhySensorTable" --with-mibs="ENTITY-MIB"
- Em seguida: make
- Depois: sudo make install
Obs1: O comando "--with-mib-modules="entPhySensorTable" da sequência acima é relacionado em chamar o arquivo criado na etapa 3, localizado na pasta "net-snmp-5.7.1/agent/mibgroup/".
Executando o NET-SNMP e testando o funcionamento da ENTITY-SENSOR-MIB
Acesse a pasta de saída: "net-snmp-5.7.1/saida/" e execute os seguintes comandos:
- Execute o comando "./bin/snmpconf -i -g basic_setup" para criar o arquivo de configuração "snmpd.conf" na raiz da pasta "saída". Se preferir e não souber configurar manualmente, crie esse arquivo e edite com a seguinte informação:
- Execute este comando para rodar o SNMP:
- sudo ./sbin/snmpd -f -M ./share/snmp/mibs -Lf snmpd.log -c snmpd.conf <numero de ip>:<porta> (ex., 127.0.0.1:161)
- Em outra janela do terminal, execute o seguinte comando para testar a MIB já adaptada para o projeto anterior do Tiago (alterei algumas coisas no arquivo citado anteriormente para fazer os testes):
- ./bin/snmpwalk -v1 -c public <numero de ip>:<porta> ENTITY-SENSOR-MIB::entPhySensorValue
O próximo passo é instalar uma versão mais recente do NET-SNMP e fazer o mesmo porte da ENTITY-SENSOR-MIB. Aguardem os próximos posts!!!