network-programming - portable - snmpwalk online
agregar nuevo agente maestro mib (5)
Estaba siguiendo las instrucciones en el sitio web net-snmp para agregar mi propio soporte MIB al agente maestro.
Aquí esta lo que hice:
- Creé mi archivo .c y .h de soporte en la carpeta net-snmp / agent / mibgroup /.
- Copié mi archivo MIB a la carpeta / usr / local / share / snmp / mibs /.
- Ejecuté "./configure --with-mib-modules =" myMib ""
- Ejecuté "make" y "make install"
- Empecé snmpd con "snmpd -f -Le -d -c snmpd.conf &"
- Puedo ver mi estructura de MIB ejecutando el comando snmpdtranslte. Sin embargo, cuando trato de usar snmpget -v2c -c public "MY-MIB-FILE :: myVariable", sigo obteniendo " * = No hay tal objeto disponible en este agente en este OID".
Hice exactamente lo que dice el tutorial, y puedo ejecutar snmpget
y snmpset
en el snmpset
NET-SNMP-TUTORIAL-MIB::nstAgentModuleObject
.
Por favor, ayúdame a entender lo que extrañé aquí.
El mensaje No Such Object available on this agent at this OID
produce cuando el agente no admite el objeto MIB solicitado o cuando el índice o la variable de instancia no están especificados.
De la guía de aprendizaje a la que se vinculó, ¿ha agregado la configuración relevante para la cadena de comunidad pública?
P.ej
Ejecutando snmpconf como se detalla aquí .
Consulte también los cambios de configuración mencionados en la sección Sugerencias para principiantes y depuración aquí .
Tampoco parece tener el índice o instancia especificada para su variable, debería ser como
snmpget -v2c -c public MY-MIB-FILE::myVariable.0
.
También puede intentar especificar explícitamente el host y el puerto en el que se ejecuta su agente maestro en caso de que no esté en snmpd.conf
.
El "Ningún objeto tal disponible en este agente en este OID" indica que, en lo que se refiere a netsnmpd, no hay un OID correspondiente en su árbol.
No se confunda con el éxito de snmptranslate
. Snmptranslate solo opera en los archivos MIB y no requiere acceso a ningún servidor snmp. Entonces, el hecho de que snmptranslate muestre correctamente los datos de su MIB es solo una indicación de que su mib se copió correctamente en $MIBDIRS
o en los directorios listados en su archivo .snmp/snmp.conf
(etc.).
Suponiendo que está siguiendo el tutorial, el mib que ha implementado proporciona una sola variable escalar. Las variables escalares reciben un índice (es decir, sufijo) de .0
. Intente ejecutar cualquiera de los siguientes comandos:
snmpget -v2c -c public MY-MIB-FILE::myVariable.0
O:
snmpwalk -v2c -c public MY-MIB-FILE::myVariable
Este último le dará una lista de todas las hojas MIB bajo ese OID, que (en su caso) incluirá el nodo .0
.
Si eso no funciona, vale la pena asegurarse de que su código esté siendo compilado y se esté ejecutando correctamente. Para empezar, verifique los detalles al final del paso ./configure
para asegurarse de que el resumen incluya su mib. p.ej. (resultado de ./configure --with-mib-modules = "nstAgentModuleObject"):
---------------------------------------------------------
Net-SNMP configuration summary:
---------------------------------------------------------
SNMP Versions Supported: 1 2c 3
Net-SNMP Version: 5.4.1
Building for: linux
snip
Agent MIB code: nstAgentModuleObject default_modules => snmpv3mibs mibII ucd_snmp notification notification-log-mib target agent_mibs agentx disman/event disman/schedule utilities host
snip
---------------------------------------------------------
Para el primero, puede ejecutar nm
sobre el archivo ejecutable snmpd agent/.libs/libnetsnmpmibs.so
y asegurarse de que la función init_X()
que corresponde a su MIB esté presente. También vale la pena asegurarse de que la función init_nstAgentModuleObject()
esté presente. Si está ejecutando make install
antes de la prueba, vale la pena asegurarse (utilizando ldd
) de que la biblioteca libnetsnmpmibs.so que está utilizando es la que acaba de crear, y que no tiene un problema de ruta.
Puede usar el sistema integrado de depuración de mensajes agregando DEBUGMSGTL()
llamadas dentro de su función init_X()
. Para ver los mensajes de depuración agregue una opción -DALL
en su línea de comandos snmpd.
ldd
valía la pena echarle un vistazo, en mi caso snmpd
se vinculó dinámicamente con Ubuntu libnetsnmpmibs.so
estándar y no obtuve soporte MIB personalizado aunque también seguí el mismo tutorial.
Reparado cosas de enlace dinámico y todo funcionó!
Intenta iniciar tu agente desde el directorio de compilación. net-snmp-xxx / agent.
./snmpd -f -L -d -c /usr/local/etc/snmpd.conf
Y detenga todos los demás agentes SNMP.
En mi caso si corro
snmpd -f -Le -d -c snmpd.conf &
este comando inicia el daemon snmp preinstalado.
snmpd.conf
view systemonly included .1.3.6.1.4.1.8072.2.4.1.1.1