2010-09-29 16 views
5

Estoy buscando desesperadamente una forma de generar trampas SNMP desde PHP. Conozco la compilación de métodos para usar snmpget pero no pude averiguar cómo enviar capturas SNMP.Generar trampas SNMP con PHP

¿Alguien conoce un fragmento de clase/código para ello? La búsqueda en la Web no trajo nada más que usar el comando exec para llamar a las herramientas cli, que definitivamente no es una opción para mí.

sospecho que sería necesario recurrir a utilizar socket_create y la funcionalidad correspondiente para generar el paquete UDP manualmente ...

Respuesta

5

Por lo que yo sé, no hay forma nativa para generar trampas/informa con php. Incluso la extensión SNMP solo permite obtener y establecer solicitudes. Entonces, la única forma (rápida) de lograr esto es llamar a una herramienta externa como net-snmp. La línea de comandos correcta sería algo así como

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

enviará una trampa linkUp genérica a gerente, para la interfaz 1 (tomada de la manpage). Para ejecutar esto desde php, los binarios net-snmp deben estar en la ruta del sistema y puede llamar al exec, shell_exec o proc_open.

Obvisouly también puedes enviar la trampa por ti mismo codificándola como una matriz de bytes sin procesar y enviándola a través de un socket UDP, pero luego tienes que implementar un codificador BER y un codificador de paquetes SNMP por ti mismo que yo no recomendar. Para su referencia, se necesitaría esas informaciones:

+0

Gracias por su respuesta, pero usar un programa externo definitivamente no es una opción. Revisaré los enlaces que me diste en tu respuesta y lo intentaré por mi cuenta. – glutorange

1

Sé que esta pregunta es viejo, pero me acaba de llegar a través de ella a través de Google, y se cree que actualizarlo de acuerdo con mis conclusiones en caso de que alguien también aterriza aquí. Como respondió Jek, usar net-snmp es la mejor solución. Aunque la publicación original decía que no quería usar ningún componente externo, considere que ahora puede agregar net-snmp a través de apt-get (buscar el paquete php-snmp) para muchas distribuciones de Linux, y estoy seguro de que lo instalará en Windows será igualmente fácil. La gran ventaja de usarlo es a partir de PHP 5.3.3, PHP heredadamente tiene funciones de interfaz incorporadas para usar SNMP, para que no tenga que usar exec, shell_exec o proc_open. Todo se puede hacer en un entorno PHP. Ver http://php.net/manual/en/book.snmp.php

+0

Gracias por su respuesta, pero era consciente de esta funcionalidad en PHP. Estaba, y aún estoy, buscando un método para enviar trampas SNMP. Usar SNMP GET/SET no es lo que necesito. Lo siento – glutorange