2010-09-29 8 views
5

Sto cercando disperatamente un modo per generare trap SNMP da PHP. Conosco la build dei metodi per utilizzare snmpget ma non sono riuscito a capire come inviare trap SNMP.Genera trap SNMP con PHP

Qualcuno conosce uno snippet di classe/codice per questo? La ricerca sul web non ha portato nulla di diverso dall'usare exec per chiamare cli tools che non è assolutamente un'opzione per me.

ho il sospetto che sarebbe obbligatoria per l'uso e la funzionalità socket_create corrispondente per generare il pacchetto UDP manualmente ...

risposta

5

Per quanto ne so, non c'è modo nativo per la generazione di trappole/informa con php. Anche l'estensione SNMP consente solo di ottenere e impostare le richieste. Quindi l'unico modo (veloce) per farlo è chiamare uno strumento esterno come net-snmp. La riga di comando corretta sarebbe qualcosa di simile

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

invierà una trappola linkUp generico per manager, per l'interfaccia 1 (tratto dal manpage). Per eseguire questo da php i binari di net-snmp dovrebbero essere sul percorso del sistema e si potrebbe chiamare exec, shell_exec o proc_open.

Obvisouly è inoltre possibile inviare il trap da solo codificandolo come array di byte non elaborati e inviarlo tramite un socket UDP, ma successivamente è necessario implementare un encoder BER e un encoder di pacchetti SNMP da soli, che non raccomandare. Per il vostro riferimento, si avrebbe bisogno di queste informazioni:

+0

Grazie per la risposta, ma l'utilizzo di un programma esterno non è assolutamente possibile. Controllerò i link che hai dato nella tua risposta e provalo da solo. – glutorange

1

So che questa domanda è vecchio, ma ho appena venuto attraverso di esso tramite Google, e ho pensato di aggiornarlo secondo le mie scoperte nel caso in cui qualcun altro anche qui atterra. Come ha risposto Jek, l'uso di net-snmp è la soluzione migliore. Anche se il post originale diceva che non voleva usare alcun componente esterno, considera che ora puoi aggiungere net-snmp anche se apt-get (guarda il pacchetto php-snmp) per molte distribuzioni Linux, e sono sicuro che installerò su Windows sarà altrettanto facile. Il grande vantaggio di utilizzarlo, è il PHP 5.3.3, PHP ha intrinsecamente funzioni di interfaccia incorporate per usare SNMP, così che non devi usare exec, shell_exec o proc_open. Tutto può essere fatto in un ambiente PHP. Vedi http://php.net/manual/en/book.snmp.php

+0

Grazie per la tua risposta - ma ero ben consapevole di questa funzionalità in PHP. Ero - e sto ancora cercando - un metodo per inviare trap SNMP. L'uso di SNMP GET/SET non è ciò di cui ho bisogno. scusate – glutorange