Si vous avez déjà eu besoin de gérer SNMP, et en particulier SNMP en PHP, vous savez à quel point un nom précis pour les mappages OID est important. Cette bibliothèque offre cela, et bien plus encore, en exposant la bibliothèque SNMP - Net-SNMP
- à PHP !
Si vous détestiez SNMP, j'espère que cette bibliothèque pourra vous convaincre d'arrêter ;)
SNMP est un protocole réseau permettant l'échange d'informations entre hôtes, pensez-y comme un REST des années 1990. Bien que le protocole soit certainement daté, il est toujours utilisé partout... et donc disponible sur presque tous les matériels réseau.
De nos jours, le SNMP est principalement utilisé pour extraire des métriques (par exemple, liste des appareils connectés à un point d'accès WiFi, ou espace disque libre sur un serveur)... mais personne n'a dit qu'il ne pouvait pas être utilisé pour contrôler votre cafetière !
MIB, ou base d'informations de gestion , est une collection de fichiers texte contenant la description des données présentes sur un système distant. Sans ces fichiers, la plupart des informations ne sont qu'un ensemble de chiffres et de chaînes dénués de sens. Pire encore, sans MIB vous ne pouvez pas demander sysUpTime.0
mais 1.3.6.1.2.1.1.3.0
... beurk !
Les MIB installées sur un système appelant un hôte SNMP distant permettent une interrogation et une validation simples des données. Ils décrivent également exactement CE QUI peut être demandé au système distant.
Presque tous les systèmes * nix sont livrés avec la bibliothèque Net-SNMP
et les outils correspondants. Par exemple, pour voir la structure décrivant les disques installés sur un Synology NAS vous pouvez utiliser une seule commande pour imprimer une jolie arborescence :
% 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)
Cependant, il n'y a pas d'accès programmatique à toutes les informations présentées dans cet arbre (et l'analyser est un cauchemar fragile).
Net-SNMP
fournit tout ce dont vous avez besoin, et c'est la bibliothèque pour les interactions SNMP et l'analyse MIB. Malheureusement, il est écrit en C
et n'a pas de liaison PHP. Étant donné que la norme MIB est en développement actif depuis près de 35 ans, il n’existe pratiquement aucune option entièrement compatible autre que Net-SNMP
.
Net-SNMP
en PHP ?! Oui! Depuis PHP 7.4 c'est possible grâce à FFI. Ce n'est pas facile, en raison d'une tonne de magie ancienne C présente dans de nombreux endroits, mais possible.
Cette bibliothèque cache la complexité derrière une jolie interface orientée objet.
(l'exemple ci-dessus est inclus dans le répertoire examples
)
libnetsnmp
/usr/lib/libnetsnmp.25.dylib
), ainsi que tous les outils comme snmptranslate
snmp
) La bibliothèque elle-même est sous licence MIT. Cependant, le code utilise et inclut des parties de Net-SNMP. L'arborescence du code source contient des parties des fichiers d'en-tête Net-SNMP, ainsi que des structures (par exemple des constantes) traduites de C en PHP.
Pour plus de détails sur les licences NET-SNMP, consultez LICENSE-NETSNMP.
Je ne suis pas avocat, mais ce logiciel est gratuit et open source et vous pouvez l'utiliser - il suffit de jouer franc jeu et d'inclure les licences ;)