我正在尝试验证可以通过PHP在我的无线控制器上找到一个AP。我需要能够传递AP名称并将其与找到的列表匹配。应该足够简单,但是我并没有对SNMP感到困惑。
我知道该名称的OID是正确的。我在此处使用了Cisco OID视图页面:http://www.oidview.com/mibs/9/CISCO-LWAPP-AP-MIB.html
哪个给了我树视图:
Object Name Object Identifier
ciscoLwappApMIB ciscoLwappApMIB (base) 1.3.6.1.4.1.9.9.513
ciscoLwappApMIBNotifs ciscoLwappApMIBNotifs (base).0
ciscoLwappApMIBObjects ciscoLwappApMIBObjects (base).1
ciscoLwappAp ciscoLwappAp (base).1.1
cLApTable cLApTable (base).1.1.1
cLApEntry cLApEntry (base).1.1.1.1
cLApSysMacAddress cLApSysMacAddress (base).1.1.1.1.1
cLApIfMacAddress cLApIfMacAddress (base).1.1.1.1.2
cLApMaxNumberOfDot11Slots cLApMaxNumberOfDot11Slots (base).1.1.1.1.3
cLApEntPhysicalIndex cLApEntPhysicalIndex (base).1.1.1.1.4
cLApName cLApName (base).1.1.1.1.5
因此,如果我print_r($test);
会得到以下列表:
Array
(
[0] => STRING: "My-AP-Name-1"
[1] => STRING: "My-AP-Name-2"
[2] => STRING: "My-AP-Name-3"
[3] => STRING: "My-AP-Name-4"
[4] => STRING: "My-AP-Name-5"
...
我想使事情尽可能简单。像这样:
$ap = "My-AP-Name";
$test = snmp2_walk($host, $community_string, "1.3.6.1.4.1.9.9.513.1.1.1.1.5");
if ( in_array( $ap, $test ) ) {
echo "We found $ap";
} else {
echo "Sorry, but it looks like $ap cannot be located.";
}
没有办法仅通过SNMP返回名称列表吗?
答案 0 :(得分:0)
因此,我只需对数组中的每个项目进行strpos
检查就可以实现我想要的。但是,如果将来有更多的AP,我想找到一种更有效的方法。
当前工作:
foreach ( $test as $key => $name) {
if ( strpos( $name, $ap ) !== FALSE ) {
echo "We found $ap";
return true;
}
}