从思科无线AP OID结果中匹配AP名称

时间:2019-06-04 16:10:43

标签: php snmp cisco access-point

我正在尝试验证可以通过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返回名称列表吗?

1 个答案:

答案 0 :(得分:0)

因此,我只需对数组中的每个项目进行strpos检查就可以实现我想要的。但是,如果将来有更多的AP,我想找到一种更有效的方法。

当前工作:

foreach ( $test as $key => $name) {
    if ( strpos( $name, $ap ) !== FALSE ) {
        echo "We found $ap";
        return true;
    }
}