如何在php';的输出中获得变量名而不是数字OID;s SNMP::walk()?

如何在php';的输出中获得变量名而不是数字OID;s SNMP::walk()?,php,snmp,mib,oid,Php,Snmp,Mib,Oid,我正在从事一个涉及SNMP、MIB和OID的项目 附录:我希望将OID翻译成名称,而不是数字格式。我只能远程访问服务器 当我使用LINUX终端和PHP函数时,我得到了两种不同的OID格式 我就是这么做的: 在LINUX终端I中,键入: snmpwalk -v 1 -c public ip | less 输出与此类似(短版本) 使用php <?php $session = new SNMP(SNMP::VERSION_1, ipaddress, "public"); $session

我正在从事一个涉及SNMP、MIB和OID的项目

附录:我希望将OID翻译成名称,而不是数字格式。我只能远程访问服务器

当我使用LINUX终端PHP函数时,我得到了两种不同的OID格式

我就是这么做的:

  • 在LINUX终端I中,键入:

    snmpwalk -v 1 -c public ip | less
    
  • 输出与此类似(短版本)

  • 使用php

    <?php
    
    $session = new SNMP(SNMP::VERSION_1, ipaddress, "public");
    $session->oid_output_format = SNMP_OID_OUTPUT_FULL;
    $result = $session->walk("");
    print_r($result);
    
    ?>
    
    
    
  • 输出如下

    问题:如何在php中获得与linux终端格式类似的格式


    也许:我们是否可以从LINUX终端运行一个命令来更改php的snmpwalk()返回OID的格式

    Php必须知道它正在遍历的MIB,否则它无法将oid转换为变量名。名称和类型等在MIB文件中定义

    我现在没有访问php实例进行测试的权限,但根据以下说明,如果您有MIB文件,这个示例应该可以工作:

    snmp_read_mib('./FOO-BAR-MIB.txt');
    print_r(snmprealwalk('localhost', 'public', 'FOO-BAR-MIB::someTable');
    
    应该输出类似于

    [FOO-BAR-MIB::someTable.0] => Gauge32: 6
    
    如果你没有MIB文件,你就不走运了。试着从设备供应商那里得到它,或者只是在网上搜索OID


    编辑:澄清一下:如果没有定义该OID的MIB文件,就无法将数字OID转换为变量名。如果本地计算机上没有MIB文件,则必须找到一种方法将它们放到那里。另请参见。

    请阐明您的目标。它们提供相同的输出是否真的很重要,或者您正在寻找更具体的内容(例如,您是否希望将OID翻译成名称,而不是数字格式)?此外,
    snmpwalk
    可以配置为提供两种输出格式中的任何一种,请检查手册页中的
    -O
    标志。Jolta:好的,但是php的
    snmpwalk()
    函数没有指定返回OID的格式的参数。snmpwalk(主机、社区、objectid)系统可以有100个MIB,它们对客户端不可见。他们应该能够远程查看某种MIB/OID结构来选择所需的OID。若所有的OID都是数字的,那个么他们就不知道为什么你们可以为本地主机这样做,并且知道MIB的名称。但是你不能远程读取MIB,你必须发送snmp Walk。这不是我想要的,但是+1可以提供一些好的提示。我知道snmp\u read\u mib()我的项目是远程执行此操作。我是说,您不能远程执行此操作。对不起。您查询的网络设备可能本地有MIB文件,但它们没有义务提供这些文件。因此,我建议联系供应商,或进行网络搜索。有一些很好的MIB存储库。