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 DELLHP 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