meklis / switcher-core
SNMP switcher core module
Installs: 1 291
Dependents: 1
Suggesters: 0
Security: 0
Stars: 12
Watchers: 4
Forks: 6
Open Issues: 0
Requires
- php: >=7.2.0
- ext-json: *
- ext-yaml: *
- composer/package-versions-deprecated: 1.x-dev
- doctrine/annotations: 1.11.x-dev
- meklis/console-client: dev-master
- meklis/ipv4-subnet-calculator: 3.*
- meklis/php-duration: ^1.2
- meklis/routeros-api: dev-master
- meklis/snmp-wrapper: dev-master
- monolog/monolog: 2.x-dev
- ocramius/proxy-manager: ^2.2
- php-di/php-di: ^6.1
- phpseclib/phpseclib: ~3.0
Requires (Dev)
- symfony/console: 4.4.x-dev
This package is auto-updated.
Last update: 2024-11-11 23:52:21 UTC
README
Библиотека PHP для работы с сетевым оборудованием
Обзор
Библиотека позволяет работать с устройствами через единый интерфейс - нет необходимости писать интерфейсы и врапперы под каждого вендора, используйте модули. Набор модулей и возвращаемый результат может отличаться в зависимости от типа оборудования, но это необходимая жертва.
Так же есть возможность доработки своих модулей, на случай, если вашего оборудования не будет в списке - просто сделайте fork).
Поддерживаемые интерфейсы
- Telnet
- SSH
- SNMP(v2c only)
- RouterOS API(without SSL)
Поддерживаемые вендоры
- D-link switches
- Huawei switches
- EdgeCore switches
- Xtreme routers
- Huawei OLTs
- BDcom OLTs
- ZTE OLTs
- C-Data OLTs
- V-Solution OLTs
- Mikrotik routers
- Cisco switches (базово)
- Cisco routers
- GCOM OLTs
- Alcatel switches (базово)
- Eltex switches (базово)
- HP switches (базово)
- Dell switches (базово)
- Allied Telesis (базово)
- TP-link (базово)
- Juniper switches (базово)
- Raisecom switches (базово)
Полный список поддерживаемого оборудования и их модулей
Список модулей
Необходимо для начала работы
PHP >= 7.2
Модули PHP: yaml, zip, curl, json, mbstring, snmp, sockets, ssl
Подключение к вашему проекту
composer install meklis/switcher-core
Как использовать
<?php require __DIR__ . "/vendor/autoload.php"; use SwitcherCore\Modules\Helper; use SwitcherCore\Switcher\CoreConnector; //Подготавливает объект кора, более удобно use SwitcherCore\Switcher\Device; use SwitcherCore\Switcher\PhpCache; //Кеш для кора, или используйте свой, реализовав интерфейс SwitcherCore\Switcher\CacheInterface $deviceIp = '127.0.0.1'; $deviceCommunity = 'public'; $deviceLogin = 'login'; $devicePassword = 'password'; $coreConnector = new CoreConnector( //Возвращает путь к встроенному каталогу с конфигурацией //При желании можно скопировать конфигурацию с библиотеки (vendor/meklis/switcher-core/configs) и изменять ее Helper::getBuildInConfig() ); $connector = ($coreConnector) //Кеш устанавливать необязательно, но желательно и желательно использовать реализацию с memcache ->setCache(new PhpCache()); $core = $connector->init( //Метод init возвращает экземпляр класса Device Device::init($deviceIp, $deviceCommunity, $deviceLogin, $devicePassword) //Установка параметров для подключений, необязательно (в примере указаны дефолтные параметры) ->set('consoleConnectionType', Device::CONSOLE_TELNET) ->set('consoleTimeout', 10) ->set('consolePort', 23) ->set('snmpRepeats', 3) ->set('snmpTimeoutSec', 2) ->set('mikrotikApiPort', 8728) ); //Пример получения данных с модуля echo json_encode($core->action('system'), JSON_PRETTY_PRINT); /* Модуль system вернет следующий вывод (поля могут изменяться в зависимости от производителя) { "descr": "RouterOS RB952Ui-5ac2nD", "uptime": "8d 9h 55min 32sec", "contact": "", "name": "G_OfficeMik", "location": "", "meta": { "name": "Mikrotik RB952Ui-5ac2nD", "detect": { "description": "^RouterOS RB952Ui-5ac2nD$", "objid": "^.1.3.6.1.4.1.14988.1$" }, "ports": 0, "extra": [], "modules": [ "system", "arp_info", "arp_ping", "interface_vlan_info", "dhcp_server_info", "lease_info", "ctrl_static_arp", "ctrl_static_lease" ] } } */
Разработка
Основные файлы и каталоги
- configs/oids/ - содержит yaml файлы списков оидов snmp (пути к файлам указываются в модели устройства)
- configs/modules.yml - список модулей (с описанием аргументов)
- configs/models/ - список моделей устройств
- src/Modules/ - реализация модулей
Описание файла из configs/models(на примере Edge-core ECS4120-28F)
- name: Edge-core ECS4120-28F key: edgecore_ecs4120_28f # ключ модели(он должен быть уникален для всей системы) ports: 26 # количество портов(необязательный параметр) device_type: SWITCH # тип устройства(необязательный параметр) inputs: # используемые интерфейсы работы с оборудованием (важный параметр. может быть еще console, routeros_api). - snmp detect: {description: ^ECS4120-28F, objid: .1.3.6.1.4.1.259.10.1.45.103 } # параметры опредления устройства oids: # список оидов, которые нужно добавить - ./oids/edgecore/ecs4120.yml modules: #Имя модуля - его реализация system: \SwitcherCore\Modules\Edgecore\System parse_interface: \SwitcherCore\Modules\Edgecore\ParseInterface interfaces_list: \SwitcherCore\Modules\Edgecore\InterfacesList fdb: \SwitcherCore\Modules\Edgecore\Fdb link_info: \SwitcherCore\Modules\Edgecore\LinkInfo counters: \SwitcherCore\Modules\Edgecore\Counters vlans: \SwitcherCore\Modules\Edgecore\VlansDot1q vlans_by_port: \SwitcherCore\Modules\Edgecore\VlanByPorts errors: \SwitcherCore\Modules\Edgecore\Errors interface_descriptions: \SwitcherCore\Modules\Edgecore\Descriptions sys_resources: \SwitcherCore\Modules\Edgecore\SysResources rmon: \SwitcherCore\Modules\Edgecore\Rmon pvid: \SwitcherCore\Modules\Edgecore\PvidDot1q sfp_media: \SwitcherCore\Modules\Edgecore\SfpMediaInfo sfp_optical: \SwitcherCore\Modules\Edgecore\SfpOpticalInfo sfp_diag: \SwitcherCore\Modules\Edgecore\SfpDiag