Как я могу получить имена переменных вместо числовых OID в выходных данных php SNMP :: walk ()?

Я работаю над проектом, который включает SNMP, MIBS и OIDS.

ДОПОЛНЕНИЕ: Я хочу, чтобы OID были переведены в имена, а не в числовой формат. У меня есть только удаленный доступ к серверу.

Я получаю 2 разных формата OID при использовании Терминал LINUX а также PHP функции

Вот что я делаю:

  1. В терминале LINUX я набираю:

    snmpwalk -v 1 -c public ip | less
    

выход похож на это (короткая версия)
введите описание изображения здесь

  1. Использование php

    <?php
    
    $session = new SNMP(SNMP::VERSION_1, ipaddress, "public");
    $session->oid_output_format = SNMP_OID_OUTPUT_FULL;
    $result = $session->walk("");
    print_r($result);
    
    ?>
    

выход ниже
введите описание изображения здесь

Проблема: Как я могу получить тот же формат в PHP, похожий на формат терминала Linux?

МОЖЕТ БЫТЬ: Есть ли команда, которую мы можем запустить с терминала LINUX, которая изменит формат snmpwalk () php возвращает OIDs ???

1

Решение

Php должен знать о MIB, по которому он идет, иначе он не может преобразовать OID в имена переменных. Имена, типы и т. Д. Определены в файле MIB.

У меня нет доступа к экземпляру php для тестирования прямо сейчас, но согласно документация этот пример должен работать, если у вас есть файл MIB:

snmp_read_mib('./FOO-BAR-MIB.txt');
print_r(snmprealwalk('localhost', 'public', 'FOO-BAR-MIB::someTable');

который должен вывести что-то похожее на

[FOO-BAR-MIB::someTable.0] => Gauge32: 6

Если у вас нет файла MIB, вам не повезло. Попробуйте получить его у поставщика оборудования или просто выполните поиск OID в Интернете.

Редактировать: уточнить: нет способа перевести числовой OID в имя переменной без наличия файла MIB, который определяет этот OID. Если у вас нет файлов MIB на локальном компьютере, вам нужно найти способ получить их там. Смотрите также этот вопрос.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]