2012-06-05 3 views
0

В настоящее время я успешно просматриваю несколько свойств на наших коммутаторах через SNMP с php. Теперь я хочу сделать итоговый вывод snmpget и snmpwalk действительно полезным для потребителей наших API.Анализ SNMP-ответов с помощью PHP

Проблема заключается в том, что ответы выглядят следующим образом: INTEGER: up(1) и INTEGER: 10103 ...

Есть ли конвенция/стандарт о том, как разобрать этот формат ответа или ответ конкретного поставщика для каждого устройства, которое мы пытаемся читать ?

Есть ли какая-либо возможность PHP-библиотеки, функции или расширения, которые могут передавать эти ответы в собственные переменные php или, по крайней мере, что-то полезное, с которым мы можем работать?


UPDATE:

Я узнал несколько новых вещей, а именно, что на самом деле есть несколько библиотек в PHP, которые можно разобрать двоичные строки ASN.1, которые в основном являются BER закодированные строки, если я прав , Проблема в том, что я не могу найти способ получить двоичные данные с устройств с помощью php ...

ответ

1

Я не уверен в ваших конкретных методах PHP, но разница между вашими двумя примерами INTEGER вероятна чтобы ваша система имела MIB SNMP, соответствующую OID (например, чтобы определить, что 1 означает «вверх»).

Если вам нужны только целые числа, вы должны передать параметр команде get или walk. Например, команды snmpget или snmpwalk net-snmp принимают -Oe для удаления символических меток. Из manpage:

   $ snmpget -c public -v 1 localhost ipForwarding.0 
       IP-MIB::ipForwarding.0 = INTEGER: forwarding(1) 
       $ snmpget -c public -v 1 -Oe localhost ipForwarding.0 
       IP-MIB::ipForwarding.0 = INTEGER: 1 

Если вы разбор вывода Net-SNMP, я рекомендую прочитать snmpcmd man page, как это имеет много вариантов вывода, которые будут интересны вам особенно отображение других типов, такие как TimeTicks и строки.

Если вы хотите получить SNMP в PHP, вы можете посмотреть, как Cacti does it.

1

Вы можете использовать эту функцию в начале вашего скрипта:

snmp_set_quick_print(TRUE); 

Это будет возвращает только значение, которое вы ищете, без ведущего «Integer» или так;)

Надежда это помогает !

Смежные вопросы