Я работаю над сценарием 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;
Других решений пока нет …