Я настраиваю сервер icinga для мониторинга состояния принтера через SNMP (уровень тонера, ошибки и тому подобное). Все принтеры доступны через общий сервер печати Windows (принтер добавляется к клиентским машинам через \ SERVER \ Printer_Share). Хотя я могу запрашивать принтеры по IP напрямую через SNMP, это ничего не говорит мне об их имени. Можно ли запросить сервер печати Windows из Linux, чтобы получить результат, подобный следующему:
Shared Printer 1 -> IP_1
Shared Printer 2 -> IP_2
Shared Printer 3 -> IP_3
Shared Printer 4 -> IP_4
Используя эту информацию, я могу написать сценарий для создания файлов конфигурации icinga. Есть сотни принтеров, поэтому я не делаю это вручную. Я не прошу никого писать для меня сценарий, а скорее укажу мне правильное направление.
Ваши варианты:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers
получить список принтеровport
ценность против HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports
Get-Printer
и Get-PrinterPort
командлеты для получения соответствующих данных через четко определенный интерфейс (вам потребуется использовать хосты Windows 8.1 или Server 2012 для запуска CMDlets, но сервер печати, на котором вы их запускаете, может быть более старой версией)Win32_Printer
класс, чтобы получить список принтеров и Win32_TCPIPPrinterPort
класс, чтобы вернуть HostAddress
значение на выбранном вами языке с поддержкой WMI-запросов (например, VBScript)Обратите внимание, что не существует единого способа сделать это, если ваши принтеры используют что-то зависящее от производителя, а не Standard TCP/IP Port
. Вам нужно будет пойти и во всем разобраться, хотя есть вероятность, что эта информация будет похоронена где-нибудь в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\<yourporttype>
подраздел реестра.
Обратите внимание, что, хотя теоретически вы можете удаленно удалять данные со станции Linux с помощью RPC, вероятно, было бы лучше, если бы NRPE передавал данные (см. NSClient ++ с использованием внешних скриптов)