Счётчик распечатанных страниц сетевого принтера - SNMP в Excel

Продолжаю пороть чушь, втирать дичь, творить неприличное и по-всякому глумиться над здравым смыслом - и всё это не выходя их Excel.

После того, как я немношк попинговал, пора применить те наработки в какой-нибудь практической задаче - пинг ради пинга выглядит немного бессмысленно.

Идея, как и в прошлый раз, украдена на том же Youtube-канале у говорящего робота. Правда, мне не интересно состояние портов маршрутизатора - это не моя проблема. А вот узнать сколько отпечатали-отсканировали мои принтеры-сканеры, будет крайне полезно. Тем более, что для этого не нужно никуда ходить и даже не нужно ставить и изучать забикс. Всего-то пятнадцать минут от идеи до реализации в Excel. Уверен, вы справитесь быстрее.

Для начала, что такое SNMP: практически любое устройство, имеющее сетевой интерфейс, умеет в этот протокол, который позволяет удалённой стороне получить набор метрик работы этого устройства и управлять им. В данном случае из всех тысяч параметров меня интересует счётчик распечатанных и отсканированных страниц.

Если в двух словах: отправляем принтеру команду с определённым идентификатором, получаем ответ.

К сожалению, нет универсального способа узнать эти идентификаторы - каждый производитель использует свой набор идентификаторов, который также может различаться от модели к модели. С другой стороны,  всё нужное легко гуглятся, ибо используется в шаблонах для Zabbix. Дальше остаётся посмотреть xml-файл и найти в нём нужную строку. Другой вариант - прочитать ВСЕ ответы устройства на ВСЕ запросы и найти нужные значения. К счастью, программ для этого полным-полно, а разобраться в потоках цифр не очень сложно. Например SnmpB.

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

Указываем IP-адрес принтера, SNMPv2 (в любой непонятной ситуации выбирай SNMPv2) и запускаем сканирование - правой кнопкой Walk.

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

На получение результата может уйти несколько минут.

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

Далее остаётся скопировать результат в блокнот (увы, поиск в SnmpB не работает) и найти текстовое значение счётчика, которое нужно предварительно подсмотреть либо через веб-интерфейс принтера, либо ещё как.

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

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

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

Для всех принтеров и МФУ (все - Kyocera), до которых я смог дотянуться, счётчик распечатанных страниц отдаётся по команде ".1.3.6.1.4.1.1347.43.10.1.1.12.1.1", а отсканированных - ".1.3.6.1.4.1.1347.46.10.1.1.5.3". Домашний Ricoh отдаёт счётчик по команде ".1.3.6.1.4.1.367.3.2.1.2.19.1.0". Единственный доступный HP LaserJet 2015 вообще никак не реагирует на SNMP, но он уже почти сдох, так что не жалко.

Дальше скучно: берём VBA, пишем

On Error Resume Next
Set o = CreateObject("OlePrn.OleSNMP")
o.Open IPaddress, "public", 2, 1000
Name = o.get(".1.3.6.1.2.1.25.3.2.1.3.1")
TotalPrintCounter = o.get(".1.3.6.1.4.1.1347.43.10.1.1.12.1.1")
TotalScanCounter = o.get(".1.3.6.1.4.1.1347.46.10.1.1.5.3")
o.Close
On Error GoTo 0

Всё, остаётся обернуть эти строки в цикл по списку принтеров, и радоваться тому, что одна регулярная задача стала решаться немного проще. Файл лежит на Яндекс.Диске, правда, скорее всего, он будет бесполезен - вряд ли у кого-нибудь есть полсотни киосер.

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

Да, почему на картинках идентификаторы начинаются с iso, а команды в коде - с ".1". Просто смиритесь. Или прочитайте описание стандарта.

MS, Libreoffice & Google docs

719 постов15K подписчика

Добавить пост

Правила сообщества

1. Не нарушать правила Пикабу

2. Публиковать посты соответствующие тематике сообщества

3. Проявлять уважение к пользователям

4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.

По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях


Важно - сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.

Утверждения вроде "пост - отстой", это оскорбление автора и будет наказываться баном.