1

我正在从事一个涉及 SNMP、MIBS 和 OIDS 的项目。

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

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

这就是我所做的:

  1. 在 LINUX 终端中输入:

    snmpwalk -v 1 -c public ip | less
    

输出与此类似(短版) 在此处输入图像描述

  1. 使用 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 的格式?

4

1 回答 1

2

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 文件,则必须找到一种方法将它们放在那里。另请参阅此问题

于 2014-09-18T15:32:46.503 回答