Monitoreo de dispositivos SNMP con PySNMP en Python
Introducción
SNMP (Simple Network Management Protocol) es un protocolo de gestión de red que permite a los administradores de red recopilar datos de dispositivos de red. PySNMP es una biblioteca Python que proporciona una interfaz para interactuar con el protocolo SNMP.
En este tutorial, veremos cómo usar PySNMP para monitorear dispositivos SNMP.
Requisitos
Para seguir este tutorial, necesitarás lo siguiente:
- Una computadora con Python 3 instalado
- Un dispositivo SNMP que admita el protocolo SNMP v1, v2c o v3
Instalando PySNMP
Para instalar PySNMP, ejecuta el siguiente comando en la terminal:
pip install pysnmp
Obteniendo los datos de un dispositivo SNMP
Para obtener los datos de un dispositivo SNMP, podemos usar la función get()
de la biblioteca PySNMP. Esta función toma tres argumentos:
- La dirección IP del dispositivo SNMP
- El puerto SNMP (usualmente 161)
- La OID (Object Identifier) del valor que queremos obtener
Por ejemplo, para obtener la carga de la CPU de un dispositivo SNMP, usaremos la siguiente función:
from pysnmp.hlapi import *
def get_cpu_load(ip_address):
community = "public"
oid = "1.3.6.1.2.1.25.3.3.1.2"
errorIndication, errorStatus, errorIndex, varBinds = \
getCmd(SnmpEngine(), CommunityData(community), UdpTransportTarget(ip_address, 161), ObjectType(oid))
if errorIndication:
print(errorIndication)
return
if errorStatus:
print("Error: %s at %s" % (errorStatus.prettyPrint(), errorIndex))
return
print(varBinds[0][1])
get_cpu_load("192.168.1.1")
Este código imprimirá la carga de la CPU del dispositivo SNMP en la dirección IP 192.168.1.1.
Obteniendo una lista de OIDs
Para obtener una lista de todos los OIDs disponibles en un dispositivo SNMP, podemos usar la función walk()
de la biblioteca PySNMP. Esta función toma tres argumentos:
- La dirección IP del dispositivo SNMP
- El puerto SNMP (usualmente 161)
- La raíz OID de la lista de OIDs que queremos obtener
Por ejemplo, para obtener una lista de todos los OIDs del dispositivo SNMP en la dirección IP 192.168.1.1, usaremos la siguiente función:
from pysnmp.hlapi import *
def get_oids(ip_address):
community = "public"
oid = "1.3.6.1.2.1"
errorIndication, errorStatus, errorIndex, varBinds = \
getCmd(SnmpEngine(), CommunityData(community), UdpTransportTarget(ip_address, 161), ObjectType(oid), bulk=True)
if errorIndication:
print(errorIndication)
return
if errorStatus:
print("Error: %s at %s" % (errorStatus.prettyPrint(), errorIndex))
return
for varBind in varBinds:
print(varBind)
get_oids("192.168.1.1")
Este código imprimirá una lista de todos los OIDs del dispositivo SNMP en la dirección IP 192.168.1.1.
Conclusiones
En este tutorial, aprendimos cómo usar PySNMP para monitorear dispositivos SNMP. Podemos usar PySNMP para obtener datos de dispositivos SNMP, como la carga de la CPU, la temperatura y el estado de los enlaces.
Para obtener más información sobre PySNMP, consulta la documentación oficial: https://pysnmp.readthedocs.io/en/latest/