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