【发布时间】:2015-05-19 19:15:16
【问题描述】:
我通过 PHP 函数 snmp2_real_walk OID 值“.1.3.6.1.2.1.17.4.3.1.1”读取思科交换机设备的 MAC 地址。问题是,一些结果(随机在 200 个结果中的 50 个左右)返回错误字符(但如果我只读取 MAC 地址,我发现了一个错误)。即:
正确的输出示例:
- [Dot1dTpFdbAddres] => 30 05 5C 38 A7 8C
- [Dot1dTpFdbAddres] => C0 7B BC 0E 56 18
错误的输出示例:
- [Dot1dTpFdbAddres] => ,v�?.b (HEX DUMP: 0 : 20 2c 76 8a 3f 2e 62 20 [ ,v.?.b ])
- [Dot1dTpFdbAddres] => ,A8��7 (HEX DUMP: 0 : 20 2c 41 38 82 d9 37 20 [ ,A8..7 ])
- [Dot1dTpFdbAddres] => xE�\� (HEX DUMP: 0 : 20 78 45 c4 2a 5c 20 d9 20 [xE.\ . ])
如果我尝试从 Getif 程序中读取 OID '.1.3.6.1.2.1.17.4.3.1.1',我得到了正确的结果。
我找不到这个问题的解决方案 - 你能帮帮我吗?
测试失败的解决方案
- PHP - 通过 snmprealwalk 更改 snmp2_real_walk
- 更改了文件编码(UTF8、ANSI)
- SNMP 超时并尝试添加 PHP sleep() 函数
- PHP 指令:snmp_set_oid_numeric_print(1)
- PHP 指令:snmp_set_quick_print(true)
- PHP 指令:snmp_set_enum_print(true)
- PHP 指令:snmp_set_valueretrieval(SNMP_VALUE_LIBRARY 和 SNMP_VALUE_PLAIN)
关于服务器:
- PHP 版本 5.5.3
- Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3
- LAMP 等价于 WAMP(也有错误)
新的重要信息:
Device return randomly none-hex value for hex values, ie.:
[iso.3.6.1.2.1.17.4.3.1.1.92.38.10.129.123.27] => Hex-STRING: 5C 26 0A 81 7B 1B
[iso.3.6.1.2.1.17.4.3.1.1.120.69.196.42.25.241] => Hex-STRING: 78 45 C4 2A 19 F1
[iso.3.6.1.2.1.17.4.3.1.1.120.69.196.42.27.169] => Hex-STRING: 78 45 C4 2A 1B A9
[iso.3.6.1.2.1.17.4.3.1.1.120.69.196.42.34.45] => STRING: "xE�*\"-"
[iso.3.6.1.2.1.17.4.3.1.1.120.172.192.142.199.214] => STRING: "x�����"
[iso.3.6.1.2.1.17.4.3.1.1.124.30.179.254.9.201] => Hex-STRING: 7C 1E B3 FE 09 C9
Mib 已正确导入 Apache 服务器,设备看起来不错。
PHP中有没有办法将snmp2_real_walk()的所有返回值都写为Hex-STRING?
*类似问题(无结果):
感谢和最好的问候, 彼得
【问题讨论】: