Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP生成SNMP陷阱_Php_Snmp_Snmp Trap - Fatal编程技术网

使用PHP生成SNMP陷阱

使用PHP生成SNMP陷阱,php,snmp,snmp-trap,Php,Snmp,Snmp Trap,我正在拼命寻找一种从PHP生成SNMP陷阱的方法。我知道使用snmpget的内置方法,但我不知道如何发送SNMP陷阱 有人知道它的类/代码片段吗?搜索web除了使用exec调用cli工具外,没有任何其他功能,这对我来说绝对没有选择余地 我怀疑有必要使用socket_create和相应的功能手动生成UDP包…据我所知,php没有生成陷阱/通知的本机方法。即使是SNMP扩展也只允许get和set请求。因此,实现这一点的唯一(快速)方法是调用外部工具,如NetSNMP。正确的命令行应该是 snmptr

我正在拼命寻找一种从PHP生成SNMP陷阱的方法。我知道使用snmpget的内置方法,但我不知道如何发送SNMP陷阱

有人知道它的类/代码片段吗?搜索web除了使用exec调用cli工具外,没有任何其他功能,这对我来说绝对没有选择余地


我怀疑有必要使用socket_create和相应的功能手动生成UDP包…

据我所知,php没有生成陷阱/通知的本机方法。即使是SNMP扩展也只允许get和set请求。因此,实现这一点的唯一(快速)方法是调用外部工具,如NetSNMP。正确的命令行应该是

snmptrap -v 1 -c public manager enterprises.spider test-hub 3 0 '' interfaces.iftable.ifentry.ifindex.1 i 1
将向manager发送接口1的通用链接陷阱(取自)。要从php执行此操作,net snmp二进制文件应位于系统路径上,您可以调用或

很明显,您也可以通过将陷阱编码为原始字节数组并通过UDP套接字发送来发送陷阱,但随后您必须自己实现BER编码器和SNMP数据包编码器,我不推荐这样做。供您参考,您需要以下信息:

  • 还有一些

没有核心SNMP陷阱库。甚至任何核心库都可以帮助您打包SNMP udp数据包。然而,我确实发现了这个废弃的项目。它提供了发送简单陷阱所需的大部分内容


我知道这个问题很老了,但我是通过谷歌发现的,我想根据我的发现进行更新,以防其他人也在这里登陆。 正如Jek所回答的,使用netsnmp是最好的解决方案。 虽然原来的帖子说他不想使用任何外部组件,但是现在你可以添加很多的Linux SNMP,虽然APP get(查找包PHP SNMP)对于许多Linux发行版来说是肯定的,而且我确信安装在Windows上也同样容易。 使用它的最大好处是,从PHP5.3.3开始,PHP天生就有使用SNMP的内置接口函数,因此您不必使用exec、shell_exec或proc_open。一切都可以在PHP环境中完成。
请参见

对于最近(2019年)搜索此类库的任何人,我找到了支持发送SNMPv1和SNMPv2陷阱(包括通知请求)的库。

感谢您的回答-但使用外部程序绝对是没有选择的。我会检查你在回答中给出的链接,然后自己尝试。谢谢你的回答-但是我很清楚PHP中的这个功能。我过去一直在寻找发送SNMP陷阱的方法。我不需要使用SNMP GET/SET。很抱歉