我正在拼命寻找一种从 PHP 生成 SNMP 陷阱的方法。我知道使用 snmpget 的内置方法,但我无法弄清楚如何发送 SNMP 陷阱。
有人知道它的类/代码片段吗?除了使用 exec 调用 cli 工具之外,在网络上搜索没有找到任何其他内容,这对我来说绝对是没有选择的。
我怀疑有必要使用socket_create和相应的功能来手动生成UDP包......
据我所知,没有本地方法可以用 php 生成陷阱/通知。即使 SNMP 扩展也只允许获取和设置请求。因此,实现此目的的唯一(快速)方法是调用外部工具,例如 net-snmp。正确的命令行类似于
snmptrap -v 1 -c public manager enterprises.spider test-hub 3 0 '' interfaces.iftable.ifentry.ifindex.1 i 1
将为接口 1 发送一个通用的 linkUp 陷阱到管理器(取自manpage http://net-snmp.sourceforge.net/docs/man/snmptrap.html)。要从 php 执行此操作,net-snmp 二进制文件应该位于系统的路径上,您可以调用exec http://de.php.net/manual/de/function.exec.php, shell_exec http://de.php.net/manual/de/function.shell-exec.php or 进程打开 http://de.php.net/manual/de/function.proc-open.php.
显然,您也可以自己发送陷阱,方法是将其编码为原始字节数组并通过 UDP 套接字发送,但是您必须自己实现 BER 编码器和 SNMP 数据包编码器,我不建议这样做。为了供您参考,您需要以下信息:
- 基本编码规则 http://en.wikipedia.org/wiki/Basic_Encoding_Rules
- ASN.1 http://en.wikipedia.org/wiki/ASN.1
- 还有一些进一步的找到链接
这里 http://en.wikipedia.org/wiki/SNMP
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)