Si alguna vez ha necesitado trabajar con SNMP, y especialmente con SNMP en PHP, sabrá lo importante que son los nombres precisos para las asignaciones de OID. ¡Esta biblioteca ofrece eso y mucho más al exponer la biblioteca SNMP, Net-SNMP
, a PHP!
Si odiabas SNMP, espero que esta biblioteca pueda convencerte de que dejes de hacerlo;)
SNMP es un protocolo de red que permite el intercambio de información entre hosts; considérelo como un REST de los años 90. Si bien el protocolo ciertamente está anticuado, todavía se usa en todas partes... y por lo tanto está disponible en casi todo el hardware habilitado para red.
Hoy en día, el SNMP se utiliza principalmente para obtener métricas (por ejemplo, lista de dispositivos conectados a un punto de acceso WiFi o espacio libre en disco en un servidor)... ¡pero nadie dijo que no pueda usarse para controlar su cafetera!
MIB, o base de información de gestión , es una colección de archivos de texto que contienen una descripción de los datos presentes en un sistema remoto. Sin estos archivos, la mayor parte de la información es sólo un conjunto de números y cadenas sin sentido. Peor aún, sin MIB no puedes solicitar sysUpTime.0
sino 1.3.6.1.2.1.1.3.0
... ¡ay!
Las MIB instaladas en un sistema que llama a un host SNMP remoto permiten realizar consultas y validaciones simples de los datos. También describen exactamente QUÉ se puede solicitar desde el sistema remoto.
Casi todos los sistemas *nix vienen con la biblioteca Net-SNMP
y herramientas para ello. Por ejemplo, para ver la estructura que describe los discos instalados en un Synology NAS, puede utilizar un solo comando para imprimir un bonito árbol:
% snmptranslate -Tp 'SYNOLOGY-DISK-MIB::diskTable'
+--diskTable(1)
|
+--diskEntry(1)
| Index: diskIndex, diskStatus
|
+-- ---- Integer32 diskIndex(1)
| Range: 0..2147483647
+-- -R-- String diskID(2)
+-- -R-- String diskModel(3)
+-- -R-- String diskType(4)
+-- -R-- Integer32 diskStatus(5)
| Range: 1..5
+-- -R-- Integer32 diskTemperature(6)
Sin embargo, no hay acceso programático a toda la información presentada en ese árbol (y analizarlo es una frágil pesadilla).
Net-SNMP
proporciona todo lo necesario y es la biblioteca para interacciones SNMP y análisis MIB. Desafortunadamente, está escrito en C
y no tiene enlace PHP. Dado que el estándar MIB está en desarrollo activo desde hace casi 35 años, prácticamente no existen opciones totalmente compatibles aparte de Net-SNMP
.
Net-SNMP
en PHP? ¡Sí! Desde PHP 7.4 es posible gracias a FFI. No es fácil, debido a una tonelada de magia C antigua presente en muchos lugares, pero es posible.
Esta biblioteca esconde la complejidad detrás de una agradable interfaz orientada a objetos.
(el ejemplo anterior está incluido en el directorio examples
)
libnetsnmp
/usr/lib/libnetsnmp.25.dylib
), así como todas las herramientas como snmptranslate
snmp
) La biblioteca en sí tiene licencia del MIT. Sin embargo, el código utiliza e incluye partes de Net-SNMP. El árbol de código fuente contiene partes de archivos de encabezado Net-SNMP, así como estructuras (por ejemplo, constantes) traducidas de C a PHP.
Para obtener detalles sobre las licencias NET-SNMP, consulte LICENSE-NETSNMP.
No soy abogado, pero esto es gratuito y de código abierto y puedes usarlo; solo juega limpio e incluye las licencias;)