0
votes

I read via PHP function snmp2_real_walk OID value '.1.3.6.1.2.1.17.4.3.1.1' for get MAC address from Cisco switch device. Problem is, that some results (randomly around the 50 results of the 200) return bad characters (yet I have found a mistake if I read only MAC addresses). Ie.:

correct output examples:

  • [Dot1dTpFdbAddres] => 30 05 5C 38 A7 8C
  • [Dot1dTpFdbAddres] => C0 7B BC 0E 56 18

wrong output examples:

  • [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.\ . ])

If I try read OID '.1.3.6.1.2.1.17.4.3.1.1' from program Getif, I have got correct results.

I can't find solution for this problem - can you please help me?

The tested solution that fails

  • PHP - Chnaged snmp2_real_walk by snmprealwalk
  • Changed encoding of files (UTF8, ANSI)
  • SNMP longer timeout and try add PHP sleep() function
  • PHP directive: snmp_set_oid_numeric_print(1)
  • PHP directive: snmp_set_quick_print(true)
  • PHP directive: snmp_set_enum_print(true)
  • PHP directive: snmp_set_valueretrieval(SNMP_VALUE_LIBRARY and SNMP_VALUE_PLAIN)

About server:

  • PHP Version 5.5.3
  • Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3
  • LAMP are equivalent to WAMP (error too)

New important informations:

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 are imported correctly to Apache server, devices look fine.

Is there a way in PHP how to write for snmp2_real_walk() all returned values as Hex-STRING?

*Similar problems (without results):

Thanks and best regards, Petr

1

1 Answers

0
votes

Use the following config:

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