PHP SNMP returns PLAIN 和 OBJECT 模式下的奇怪十六进制值
PHP SNMP returns strange hex values in PLAIN and OBJECT mode
我正在研究 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;
这是输出的屏幕截图:
经过几个小时的测试,我注意到结果是二进制的。因此,在我用 bin2hex
函数包装结果后,结果终于可读了。
$example = snmpget(BS_IP, 'public', OID);
echo "Example SNMP_VALUE_PLAIN: " . bin2hex($example) . PHP_EOL;
我正在研究 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;
这是输出的屏幕截图:
经过几个小时的测试,我注意到结果是二进制的。因此,在我用 bin2hex
函数包装结果后,结果终于可读了。
$example = snmpget(BS_IP, 'public', OID);
echo "Example SNMP_VALUE_PLAIN: " . bin2hex($example) . PHP_EOL;