Я работаю над проектом, который включает SNMP, MIBS и OIDS.
ДОПОЛНЕНИЕ: Я хочу, чтобы OID были переведены в имена, а не в числовой формат. У меня есть только удаленный доступ к серверу.
Я получаю 2 разных формата OID при использовании Терминал LINUX а также PHP функции
Вот что я делаю:
В терминале LINUX я набираю:
snmpwalk -v 1 -c public ip | less
выход похож на это (короткая версия)
Использование 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 ???
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 на локальном компьютере, вам нужно найти способ получить их там. Смотрите также этот вопрос.
Других решений пока нет …