Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP SNMP Real Walk返回错误字符_Php_Encoding_Snmp - Fatal编程技术网

PHP SNMP Real Walk返回错误字符

PHP SNMP Real Walk返回错误字符,php,encoding,snmp,Php,Encoding,Snmp,我通过PHP函数snmp2_real_walk OID value'.1.3.6.1.2.1.17.4.3.1.1'读取从Cisco交换机设备获取MAC地址。问题是,一些结果(随机地在200个结果中的50个左右)返回错误字符(但如果我只读取MAC地址,我发现了一个错误)。即: 正确的输出示例: [DOT1DTPFDBADRES]=>30 05 5C 38 A7 8C [DOT1DTPFDBADRES]=>C07B BC 0E 56 18 错误的输出示例: [DOT1DTPFDBADRES]

我通过PHP函数snmp2_real_walk OID value'.1.3.6.1.2.1.17.4.3.1.1'读取从Cisco交换机设备获取MAC地址。问题是,一些结果(随机地在200个结果中的50个左右)返回错误字符(但如果我只读取MAC地址,我发现了一个错误)。即:

正确的输出示例:

  • [DOT1DTPFDBADRES]=>30 05 5C 38 A7 8C
  • [DOT1DTPFDBADRES]=>C07B BC 0E 56 18
错误的输出示例:

  • [DOT1DTPFDBADRES]=>,v�?.(十六进制转储:0:20 2c 76 8a 3f 2e 62 20[,v.?.b])
  • [DOT1DTPFDBADRES]=>,A8��7(十六进制转储:0:20 2c 41 38 82 d9 37 20[,A8..7])
  • [DOT1DTPFDBADRES]=>xE�\ � (六角卸载: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-技术snmp2\u real\u walk by snmprealwalk
  • 更改了文件的编码(UTF8,ANSI)
  • SNMP超时时间更长,请尝试添加PHP sleep()函数
  • PHP指令:snmp\u set\u oid\u numeric\u print(1)
  • PHP指令:snmp\u set\u quick\u print(true)
  • PHP指令:snmp\u set\u enum\u print(true)
  • PHP指令:snmp\u集合\u值检索(snmp\u值\u库和snmp\u值\u平原)
关于服务器:

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 
  • PHP版本5.5.3
  • Apache/2.4.4(Win32)OpenSSL/1.0.1e PHP/5.5.3
  • 指示灯等同于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\u real\u walk()的所有返回值都写成十六进制字符串?

*类似问题(无结果):

  • *

谢谢并致以最良好的祝愿,
Petr

使用以下配置:

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

您好,很遗憾,您的代码输出不起作用。我再次尝试了不同的价值观,但没有成功。代码输出示例:
[iso.3.6.1.2.1.3.1.1.2.15.1.10.136.4.31]=>“00 E0 D8 12 2F 30”[iso.3.6.1.2.1.3.1.1.2.15.1.10.136.4.33]=>“x��ɱ“[iso.3.6.1.2.1.3.1.1.2.15.1.10.136.4.34]=>“00 25 B3 F8 A3 43”[iso.3.6.1.2.1.3.1.1.2.15.1.10.136.4.64]=>”�U�" [iso.3.6.1.2.1.3.1.1.2.15.1.10.136.4.66]=>“00 24 81 A0 10 14”