我正在使用php snmp脚本,我注意到了一些奇怪的事情。当我将snmp_set_valueretrieval
设置为SNMP_VALUE_PLAIN
或SNMP_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;
这是输出截图:
答案 0 :(得分:0)
经过数小时的测试后,我发现结果是二进制的。因此,在我使用bin2hex
包裹结果后,函数结果最终可读。
$example = snmpget(BS_IP, 'public', OID);
echo "Example SNMP_VALUE_PLAIN: " . bin2hex($example) . PHP_EOL;