Es un protocolo estándar de red para gestionar y monitorear dispositivos en una red, como routers, switches, servidores, impresoras, etc. Permite a un gestor SNMP (software) comunicarse con los agentes SNMP (dispositivos) para consultar información o enviar configuraciones
Conceptos fundamentales:
- MIB (Management Information Base): Es un conjuto de definiciones que contiene la descripción de todos los objetos gestionados por SNMP, junto con sus OIDs. Permite entender y manejar la estructura y los datos que el agente SNMP proporciona al gestor.
Los MIBs se describen en un lenguaje llamado ASN.1 (Abstract Syntax Notation One) - OID (Object Identifier): Es un identificador único para un objeto gestionado en un dispositivo SNMP. Representa una variable o atributo específico, como el estado de una interfaz de red o el número de bytes recibidos.
- Agente SNMP: Un software en el dispositivo que responde a las solicitudes del gestor SNMP , por defecto utiliza el puerto: 161 UDT y envía notificaciones (traps) sobre eventos importantes.
- Trap: Una notificación enviada por el agente SNMP al gestor para informar eventos importantes, como un fallo de hardware o una interfaz caída. Por defecto utiliza el puerto: 162 UDT
- GET: Solicitud del gestor al agente para leer un valor (OID).
- SET: Solicitud del gestor al agente para modificar un valor (OID).
- Walk: Operación que recorre todos los OIDs disponibles en el dispositivo.
Aquí tenemos el archivo *.mib de un scalance
Y si ahora queremos saber los OID (Object Identifier) de este scalance, vamos a utilizar un explorador , MIB Browser.
Desde aquí podríamos enviar los comandos a nuestro switch y comprobar el resultado, como no lo tengo 🙁 lo vamos a probar con nuestro servidor
He instalado el role de SNMP en un Windows Server 2022 y vamos a ver como funciona
Para nuestro caso, de todos los archivos existentes con la instalación, vamos a cargar el HOST-RESOURCES-MIB y comprobar su funcionamiento.
Al haber habilitado el role de servidor SNMP vamos poder consultar la información que este disponible en nuestro MIB a través de su correspondiente OID.
Como el browser está instalado en el propio servidor, la dirección es localhost == 127.0.0.1 , buscamos el parametro y go 😉
Ahora un paso mas … si por cualquier motivo, necesitamos hacer consultas a nuestro SNMP y obtener el resultado / valor para mostrarlo en nuestro SCADA , como nativamente no hay ninguna libreria, podemos utilizar la siguiente aplicación Net-SNMP
Cuando la instalamos tenemos las siguientes herramientas y vamos a poder generar por poner un caso práctico un script obtener el resultado y darle el formato que necesitemos y linkarlo a nuestro sistema SCADA.
En servidores como DELL– HP ahí puedes encontrar los MIB si necesitas saber el estado del RAID por poner un ejemplo real
Ejemplo de un script en VBScript 🙂 para WinCC , para Factory Talk View con VBA o powershell , para IFIX con VBA etc… y AVEVA tiene su propio driver
Set objShell = CreateObject("WScript.Shell")
' Nombre
OID_Nombre = "1.3.6.1.2.1.1.5.0"
command = "C:\usr\bin\snmpget -v2c -c public 127.0.0.1 " & OID_Nombre
' Tiempo de actividad
OID_Tiempo = "1.3.6.1.2.1.1.3.0"
command = "C:\usr\bin\snmpget -v2c -c public 127.0.0.1 " & OID_Tiempo
OID_Description = "1.3.6.1.2.1.1.1.0"
command = "C:\usr\bin\snmpget -v2c -c public 127.0.0.1 " & OID_Description
Set objExec = objShell.Exec(command)
Do Until objExec.StdOut.AtEndOfStream
WScript.Echo objExec.StdOut.ReadLine()
Loop