我正在尝试通过php发送snmp请求,我遇到了一些使用snmpget的问题。在bash shell中一切正常,在php中使用snmpget我得到一些错误而shell_exec没有,反之亦然(参见源代码)。
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
snmp_read_mib('/home/user/.snmp/mibs/PDU2-MIB.txt');
snmp_read_mib('/home/user/.snmp/mibs/ASSETMANAGEMENT-MIB.txt');
echo $output = shell_exec("snmpget -v 2c -c public 192.168.1.58 .1.3.6.1.2.1.4.31.3.1.6.2.3");
//correct output
echo "<br>";
echo snmpget("192.168.1.58", "public", ".1.3.6.1.2.1.4.31.3.1.6.2.3");
//Warning: snmpget(): Error in packet at 'RFC1213-MIB::ip.31.3.1.6.2.3': (noSuchname)
echo $output = shell_exec("snmpget -v 2c -c public -m +ASSETMANAGEMENT-MIB:PDU2-MIB 192.168.1.58 PDU2-MIB::newestLogID.1");
//no output at all - in bash I get the correct value/output
echo "<br>";
echo snmpget("192.168.1.58", "public", "PDU2-MIB::newestLogID.1");
//correct output
似乎数字OID仅适用于shell_exec,而Alias-OID仅适用于函数snmpget()。
为什么?是不是可以将snmpget与自己的mibs和数字oids一起使用? 为什么我的第二个shell_exec在bash中完美运行时,我甚至得不到响应? (甚至没有出现error_reporting的错误消息)..
非常感谢任何帮助!
谢谢!
答案 0 :(得分:0)
看起来你试图使用snmpget函数获得仅在snmp v2或v3中可用的64位计数器变量(IP-MIB :: ipIfStatsHCInOctets.ipv6.3)。 使用snmp2_get();功能而不是。参数与snmpget();
相同请参阅文档中的评论:snmpget function