PHP SNMP Real Walk返回错误的字符

时间:2015-05-19 19:15:16

标签: php encoding snmp

我通过PHP函数读取snmp2_real_walk OID值'.1.3.6.1.2.1.17.4.3.1.1'以从Cisco交换机设备获取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的chnaged 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 Version 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 

Mibs正确导入Apache服务器,设备看起来很好。

有没有办法在PHP中如何为snmp2_real_walk()写入所有返回的值为Hex-STRING?

*类似问题(没有结果):

谢谢和最诚挚的问候,  彼得

1 个答案:

答案 0 :(得分:0)

使用以下配置:

snmp_set_valueretrieval(SNMP_VALUE_LIBRARY);
snmp_set_quick_print(1); 
snmp_set_enum_print(0);