PHP から SNMP トラップを生成する方法を必死に探しています。snmpget を使用する組み込みメソッドは知っていますが、SNMP トラップを送信する方法を理解できませんでした。
クラス/コードスニペットを知っている人はいますか? Web を検索しても、exec を使用して cli ツールを呼び出す以外に何も表示されませんでした。
UDPパッケージを手動で生成するには、socket_createと対応する機能を使用する必要があると思います...
私の知る限り、phpでトラップ/インフォームを生成するネイティブな方法はありません。SNMP拡張機能でさえ、getおよびset要求のみを許可します。したがって、これを実現する唯一の(迅速な)方法は、net-snmpなどの外部ツールを呼び出すことです。適切なコマンドラインは次のようになります
snmptrap -v 1 -c public manager enterprises.spider test-hub 3 0 '' interfaces.iftable.ifentry.ifindex.1 i 1
インターフェイス1(マンページから取得)の汎用linkUpトラップをマネージャに送信します。これをphpから実行するには、net-snmpバイナリがシステムのパス上にある必要があり、exec、shell_exec、またはproc_openのいずれかを呼び出すことができます。
もちろん、生のバイト配列としてエンコードしてUDPソケットを介して送信することで、トラップを自分で送信することもできますが、BERエンコーダーとSNMPパケットエンコーダーをすべて自分で実装する必要がありました。これはお勧めしません。参考までに、次の情報が必要になります。
コア SNMP トラップ ライブラリはありません。または、SNMP udp パケットをパッケージ化するのに役立つコア ライブラリです。しかし、私はこの放棄されたプロジェクトを見つけました。http://code.google.com/p/php-snmp/は、単純なトラップを送信するために必要なもののほとんどを提供します。
もう少しアクティブですが、もっと複雑なようですhttp://www.activexperts.com/network-component/howto/snmpts/php/