PHP SNMP在PLAIN和OBJECT模式下返回奇怪的十六进制值

时间:2015-10-20 12:49:13

标签: php snmp

我正在使用php snmp脚本,我注意到了一些奇怪的事情。当我将snmp_set_valueretrieval设置为SNMP_VALUE_PLAINSNMP_VALUE_OBJECT时,输出是一些奇怪的字符(有时是中文字母)。但是,当我将其设置为SNMP_VALUE_LIBRARY时,一切看起来都很好。有没有办法将这些输出转换为可读字符串?这是我的代码

snmp_set_quick_print(1);
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);

$example = snmpget(BS_IP, 'public', OID);
echo "Example SNMP_VALUE_PLAIN: " . $example . PHP_EOL;

snmp_set_valueretrieval(SNMP_VALUE_LIBRARY);

$example = snmpget(BS_IP, 'public', OID);
echo "Example SNMP_VALUE_LIBRARY: " . $example . PHP_EOL;

snmp_set_valueretrieval(SNMP_VALUE_OBJECT);

$example = snmpget(BS_IP, 'public', OID);
echo "Example SNMP_VALUE_OBJECT: " . $example->value . PHP_EOL;

这是输出截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

经过数小时的测试后,我发现结果是二进制的。因此,在我使用bin2hex包裹结果后,函数结果最终可读。

$example = snmpget(BS_IP, 'public', OID);
echo "Example SNMP_VALUE_PLAIN: " . bin2hex($example) . PHP_EOL;