На работе пришлось по ходу решить небольшую проблему, с которой наверняка уже сталкивались некоторые администраторы. Необходимо было сменить IP адрес сетевого принтера
Вроде бы пустяковая задача, только в том случае если бы предыдущий администратор оставил пароль на вход в панель администрирования принтера. Но человек давно не работает, а запароленный принтер вот он - перед нами. И как сами понимаете пароль никто не знает.
И хотелось бы сбросить настройки по умолчанию, но опять же доступ к этому пункту меню запаролен. Конечно же есть процедура восстановления настроек по умолчанию с помощью нажатия каких то кнопок и выключения-включеня принтера, но:
1. они для каждого принтера свои
2. необходим физический доступ к принтеру
3. для этого надо читать инструкцию или запрашивать службу поддержки:)
Но в нашем случае мы пойдем другим путем и воспользуемся возможностью работать с сетевыми устройствами через протокол SNMP.
Не все администраторы знают о существовании протокола управления сетевыми устройствами, еще меньше людей знают, о том, что с помощью SNMP можно записывать и давать команды сетевому устройству и еще меньше людей, уделяют смене так называемыму параметру community на всех своих сетевых устройствам.
Мы воспользуемся именно тем, что в подавляющем случае никто не меняет данные community RO (read only) и RW
(read write) которые часто принимают значения public и private. С точки зрения безопасности, это огромная брешь в сетевой инфраструктуре, но в нашем случае это спасательный круг, который поможет нам удаленно сбросить настройки принтера по умолчанию.
Про протокол SNMP написано много и мы рассказывать о том что это и как им пользоватся не будем.
Поставленную задачу будем решать с помощью ManageEngine MibBrowser. За последний год это единственная адекватная ( не триальная) программа позволяющая легко решать нашу задачу. Для продвинутых пользователей и тех кто работает на Linux системах и snmpwalk устроит с MIB библиотеками, но мы хотим предоставить легкую инструкцию как перегружать, сбрасывать настрйоки принтера удаленно.
Программа выглядит вот так

Введем данные, которые нам известны по нашему принтеру. Community,которые установлены по умолчанию, на этом принтере мне пришлось найти в интернете и они оказались одинаковыми что на чтение, что на запись и имею значение public

Все остальные параметры понятны, IP адрес устройства и порт SNMP 161
Зайдем в бибилиотеку SNMPv2-MIB и попробуем прочитать имя устройства

Для получения информации, нажимаем sysName, потом правой кнопкой вызываем меню и там выбираем GET
В этом же меню мы можем увидеть, какие параметры мы можем перезаписывать а какие только читать. Где зеленый лист перечеркнут - это read-only(только чтение без возможности изменять значения).

Мы увидели что наш принтер имеет имя NPI6AB729
Все это хорошо, но где наше решение проблемы? Давайте перейдем в другую бибилиотеку MIB

И прочитаем значения аттрибута prtGeneralReset а также его описание

Похоже это именно то, что мы искали. В описании буквально говорится следующее: "Setting this value to `powerCycleReset', `resetToNVRAM', or `resetToFactoryDefaults' will result in the resetting of the printer. When read, this object will always have the value `notResetting(3)', and a SET of the value `notResetting' shall have no effect on the printer. Some of the defined values are optional. However, every implementation must support at least the values `notResetting' and resetToNVRAM'."
То есть если хотите просто перегрузите запишите в этот аттрибут значение powerCycleReset, если хотите сбросить на заводские настроки то resetToFactoryDefaults
Нам нужно втрое, и поэтому в поле Set Value мы пишем resetToFactoryDefaults

и правой кнопкой мыши вызываем команду не GET а SET.
Ошибка? Не работает?
Не удивительно, смотрите какой аттрибут мы прочитали (на предыдущем рисунке) prtGeneralReset.1 а записать пытаемся в Object ID prtGeneralReset
Разницу видите?
Достаточно в в поле Object ID добавить в конец строки .1 что бы она приобрела такой вид
.iso.org.dod.internet.mgmt.mib-2.printmib.prtGeneral.prtGeneralTable.prtGeneralEntry.prtGeneralReset.1
и еще раз попытатся установить новое значение командой SET
Ошибки нет? будьте уверены что тот принтер, которому вы подали команду, уже находится в процессе перезагрузки.
Всё, наша задача решена.
Напоследок, покидая эту замечательную программу, пролистнув mib для принтеров, можно убедится насколько много различных значений можно установить удаленно, не разбираясь в драйверах и не копошась в дисплее в три строки, стоя у принтера.
Удачи в работе!