Если вам когда-либо приходилось иметь дело с SNMP, и особенно с SNMP в PHP, вы знаете, насколько важно точное сопоставление имен и OID. Эта библиотека предлагает это, а также гораздо больше раскрывает библиотеку SNMP - Net-SNMP
- для PHP!
Если вы ненавидели SNMP, я надеюсь, что эта библиотека сможет убедить вас остановиться;)
SNMP — это сетевой протокол, позволяющий обмениваться информацией между хостами. Подумайте об этом как о REST из 1990-х годов. Хотя протокол, безусловно, устарел, он до сих пор используется повсюду... и, таким образом, доступен практически на любом сетевом оборудовании.
В настоящее время SNMP используется в основном для получения показателей (например, списка устройств, подключенных к точке доступа Wi-Fi, или свободного дискового пространства на сервере)... но никто не говорил, что его нельзя использовать для управления кофейником!
MIB, или база управляющей информации , представляет собой набор текстовых файлов, содержащих описание данных, присутствующих в удаленной системе. Без этих файлов большая часть информации представляет собой бессмысленный набор чисел и строк. Хуже того, без MIB вы не можете запросить sysUpTime.0
, а 1.3.6.1.2.1.1.3.0
... угу!
MIB, установленные в системе, вызывающей удаленный хост SNMP, позволяют легко запрашивать и проверять данные. Они также описывают, ЧТО именно можно запросить у удаленной системы.
Почти каждая *nix-система поставляется с библиотекой Net-SNMP
и инструментами для нее. Например, чтобы просмотреть структуру, описывающую установленные диски на Synology NAS, вы можете использовать одну команду для печати красивого дерева:
% snmptranslate -Tp 'SYNOLOGY-DISK-MIB::diskTable'
+--diskTable(1)
|
+--diskEntry(1)
| Index: diskIndex, diskStatus
|
+-- ---- Integer32 diskIndex(1)
| Range: 0..2147483647
+-- -R-- String diskID(2)
+-- -R-- String diskModel(3)
+-- -R-- String diskType(4)
+-- -R-- Integer32 diskStatus(5)
| Range: 1..5
+-- -R-- Integer32 diskTemperature(6)
Однако ко всей информации, представленной в этом дереве, нет программного доступа (и его анализ представляет собой хрупкий кошмар).
Net-SNMP
предоставляет все необходимое: это библиотека для взаимодействия SNMP и анализа MIB. К сожалению, он написан на C
и не имеет привязки к PHP. Поскольку стандарт MIB находится в активной разработке уже около 35 лет, практически не существует полностью совместимых вариантов, кроме Net-SNMP
.
Net-SNMP
в PHP?! Да! Начиная с PHP 7.4 это возможно благодаря FFI. Это непросто, поскольку во многих местах присутствует масса древней магии C, но возможно.
Эта библиотека скрывает сложность за красивым объектно-ориентированным интерфейсом.
(пример выше включен в каталог examples
)
libnetsnmp
/usr/lib/libnetsnmp.25.dylib
), а также всеми инструментами, такими как snmptranslate
snmp
). Сама библиотека имеет лицензию MIT. Однако код использует и включает части Net-SNMP. Дерево исходного кода содержит части файлов заголовков Net-SNMP, а также структуры (например, константы), переведенные с C на PHP.
Подробную информацию о лицензировании NET-SNMP см. в разделе LICENSE-NETSNMP.
Я не юрист, но эта штука бесплатна и имеет открытый исходный код, и вы можете ее использовать — просто играйте честно и включите лицензии;)