2010-09-29 9 views
5

Je cherche désespérément un moyen de générer des traps SNMP à partir de PHP. Je connais la construction de méthodes pour utiliser snmpget mais je n'ai pas réussi à comprendre comment envoyer des pièges SNMP.Générer des traps SNMP avec PHP

Quelqu'un connaît-il un extrait de classe/code pour cela? La recherche sur le web n'a rien apporté d'autre que l'utilisation d'exec pour appeler les outils cli, ce qui n'est définitivement pas une option pour moi.

Je pense qu'il serait nécessaire d'utiliser socket_create et la fonctionnalité correspondante pour générer le paquet UDP manuellement ...

Répondre

5

Pour autant que je sache, il n'y a pas de manière native pour générer des pièges/Informe avec php. Même l'extension SNMP autorise uniquement les requêtes get et set. La seule façon (rapide) d'y parvenir est d'appeler un outil externe comme net-snmp. La ligne de commande appropriée serait quelque chose comme

snmptrap -v 1 -c public manager enterprises.spider test-hub 3 0 '' interfaces.iftable.ifentry.ifindex.1 i 1 

envoie un piège linkUp générique gestionnaire, pour l'interface 1 (prise du manpage). Pour l'exécuter à partir de php, les fichiers binaires net-snmp doivent se trouver sur le chemin du système et vous pouvez appeler exec, shell_exec ou proc_open. Cependant, vous pouvez également envoyer le trap par lui-même en le codant comme tableau d'octets bruts et en l'envoyant sur une socket UDP, mais vous devez ensuite implémenter un encodeur de BER et un encodeur de paquets SNMP que je n'ai pas recommander. À titre de référence, vous devez les informations:

+0

Merci pour votre réponse - mais l'utilisation d'un programme externe est définitivement pas une option. Je vais vérifier les liens que vous avez donnés dans votre réponse et essayer moi-même. – glutorange

1

Je sais que cette question est vieux, mais je suis tombé via Google, et pensé à le mettre à jour selon mes conclusions dans le cas où quelqu'un d'autre atterrit aussi ici. Comme l'a répondu Jek, utiliser net-snmp est la meilleure solution. Bien que le message d'origine indiquait qu'il ne voulait pas utiliser de composants externes, sachez que vous pouvez maintenant ajouter net-snmp à apt-get (recherchez le package php-snmp) pour de nombreuses distributions Linux, et je suis sûr que l'installation Les fenêtres seront également faciles. Le grand avantage de l'utiliser est PHP 5.3.3, PHP intègre intrinsèquement des fonctions d'interface pour utiliser SNMP, de sorte que vous n'avez pas besoin d'utiliser exec, shell_exec ou proc_open. Tout peut être fait dans un environnement PHP. Voir http://php.net/manual/en/book.snmp.php

+0

Merci pour votre réponse - mais j'étais bien au courant de cette fonctionnalité en PHP. J'étais - et je suis toujours - à la recherche d'une méthode pour envoyer des interruptions SNMP. Utiliser SNMP GET/SET n'est pas ce dont j'ai besoin. Pardon – glutorange