Данный раздел содержит вспомогательные скрипты, позволяющие автоматизировать работу с системой мониторинга сетевых устройств PRTG и расширить ее функционал. Стоит отметить, что данная программа ориентирована на мониторинг устройств по snmp протоколу, потому работу по другим протоколам необходимо реализовывать самостоятельно в виде кастомных сенсоров. Кроме того, основным недостатком данной системы мониторинга является то, что она не умеет автоматически сканировать всю сеть и добавлять новые устройства.
1. printer_toner_level.py - реализация кастомного сенсора для PRTG, который позволяет вытащить уровень тонера с его web-страницы. Для реализации были использованы библиотеки re, sys, json и requests, а также утилита web inspector, встроенная в гугл хром. Была поставлена задача - написать универсальный скрипт, который позволяет парсить любые принтеры, имеющиеся в сети, а также, чтобы добавление нового типа принтера в скрипт не было проблематичным. Требований к производительности не было установлено, хотя здесь конечно стоило реализовать многопточность для запросов по различным паттернам. Как работает программа? Система мониторинга с некоторой периодичностью запускает скрипт, передавая на вход программе json структуру, содержащую ip устройства. По известным шаблонам скрипт обращается к web интерфейсу устройства и парсит его по имеющимся паттернам. На выход программа передает json структуру, с которой умеет работать PRTG. Добавление нового типа принтера реализовано достаточно просто. Для начала необходимо открыть web-страницу принтера с включенным веб инспектором и среди ресурсов найти страничку, содержащую в себе информацию об уровне тонера. Затем пишется регулярка, которая позволяет вытщить значение уровня тонера из этой страницы. Отдельным скриптом тестируем работу регулярки и в случае успешного прохождения теста добавляем получившийся паттерн в словарь.
2. projector_pjlink.py - скрипт для позволяющий PRGT взаимодействовать с проекторами по PJLINK протоколу. Для работы использован стек библиотек, как и в прошлом скрипте. Представленный кастомный сенсор позволяет получить информацию о том какой порт подключен, сколько часов наработала лампа и узнать включен ли сейчас проектор.
3. find_new_devices_from_ip_scanner.py - скрипт для отбора новых сетевых устройств (которых еще нет в системе PRTG) из выходного csv-файла, полученного в результате сканирования сети через программу advanced ip scanner. Суть работы программы заключается в следующем. На вход подается csv-файл, который содержит все сетевые устройства. Нас интересуют лишь те, которые имеют web-страницу (принтеры, проекторы, камеры). Устройства не имеющие хотя бы один сетевой протокол (http, htpps, ftp) исключаются из этого списка. Затем производится запрос к API системы мониторинга и запрашивается список текущих устройст в БД. На следующем шаге проверяется вхождение новых сетевых устройств в БД системы мониторинга. Если устройства нет в БД, то оно считается новым. Для сформированного списка новых устройств применяется классификатор, который по клюевым словам позволяет определить тип устройства. В результате работы программы получаем csv-файл, который содержит ip адреса, имена, протоколы и типы сетевых устройств, которых на данный момент нет в БД системы мониторинга. Для данной программы были использованы библиотеки numpy, pandas (который ну очень помог упростить работу с данными), json и requests. Что можно было улучшить? Думаю, что неплохой идеей было бы реализовать собственный сканер сети, как отдельную функцию, чтобы добавить еще больше автоматизировать процесс поиска новых сетевых устройств.
