2024-11-01

Собственно любое необходимое нам значение для систем мониторинга можно получить в виде oid формата .1.3.6.1.4.1.15.Х и снимать через удобный SNMP

В моем случае возникла задача мониторить старенький ИБП Ippon, snmp – карты в нем, конечно же, нет, и покупать ее никто не собирался, но есть USB подключенный к компу, им и воспользуемся.

Для начала нам понадобится включить службу SNMP на имеющейся Windows(x64), как это сделать можно найти на просторах интернета

Далее копируем библиотеку snmptools.dll в папку C:\Windows\

Затем для наших нужд создадим папку Scripts на диске С для скриптов (путь будет C:\Scripts\)

В этой папке создадим файл counters.ini и для теста вставим содержимое

[1.3.6.1.4.1.15.1]
type=string
counter=SNMP TEST

О созданных файлах необходимо внести изменение в реестр, для этого можно воспользоваться готовым файлом или создать свой с расширением reg

Содержимое файла:

Windows Registry Editor Version 5.00

 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents]

“snmptools”=”SOFTWARE\\snmptools\\CurrentVersion”

 

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\snmptools\currentversion]

“counters”=”C:\Scripts\counters.ini”

“debug”=”1”

;system32=C:\Windows\SysWOW64 under x64

“Pathname”=”%systemroot%\snmptools.dll”

“oid”=”1.3.6.1.4.1.15”

 

Где counters – путь до counters.ini

debag – 1 = вести логи (лог будет в корне диска C), 0 = отключить ведение логов

Перезапускаем службу SNMP

После чего можем проверять, для проверки я воспользуюсь SNMPWALK.exe

Для этого копирую snmpwalk.exe в ту же рабочую папку C:\Scripts\

Открываем терминал CMD и вставляем туда

c:\Scripts\SnmpWalk.exe -r:127.0.0.1 -c:public -os:.1.3.6.1.4.1.15 -op:.1.3.6.1.4.1.15.9

Видим наше значение, если что-то пошло не так, то не забываем про лог файл в корне диска C

Далее необходимо отредактировать ранее созданный counter.ini желаемыми значениями сопоставив с oid

Примерное содержание может быть следующим:

;Для статичной записи

[1.3.6.1.4.1.15.1]

type=string

counter=SNMP TEST

;Для запуска скриптов VBS

[1.3.6.1.4.1.15.2]

type=exec

counter=cscript /nologo c:\1c_sessions.vbs

;Для однострочных команд

[1.3.6.1.4.1.15.3]

type=exec

counter=cmd /c hostname

;Для запуска python скриптов

[1.3.6.1.4.1.15.4]

type=exec

counter=python3 c:\Scripts\test.py

;Для запуска Powershell скриптов

[1.3.6.1.4.1.15.5]

type=exec

counter=powershell c:\Scripts\test.ps1

В моем случае для связи через USB c ИБП Ippon была установлена штатная программа WinPower, которая умеет запускать собственный веб-сервер доступный по адресу https://IP:8888, и к тому же умеет отдавать данные в формате JSON по адресу https://IP:8888/0/json

Этого оказалось достаточно, пишем простой Powershell скрипт и парсим нужное значение 

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }

$json = (New-Object System.Net.WebClient).DownloadString(‘https://IP:8888/0/json’)

$data = $json | ConvertFrom-Json

$data.batCapacity.Trim(‘%’)

 

Увы, запрос json у ибп доступен только через ssl зашифрованное соединение, в нашем случае с невалидным сертификатом. Powershell явно не умеет игнорировать сертификат, для этого и пользуемся [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true } перед запросом. Список всех доступных значений можем получить поменяв $data.batCapacity.Trim(‘%’) на $data

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *