我正在设置一个通过SNMP监视打印机状态的icinga服务器(墨粉量,错误等等)。 所有打印机都可以通过共享的Windows打印服务器访问(打印机通过\ SERVER \ Printer_Share添加到客户端机器)。 虽然我能够通过SNMP直接通过IP查询打印机,但不知道他们的名字。 是否可以从Linux中查询Windows打印服务器以产生类似于以下内容的输出:
Shared Printer 1 -> IP_1 Shared Printer 2 -> IP_2 Shared Printer 3 -> IP_3 Shared Printer 4 -> IP_4
有了这个信息,我可以写一个脚本来创buildicingaconfiguration文件。 有数百台打印机,所以我不这样做手动。 我不是要求任何人为我写剧本,而是指向正确的方向。
您的select:
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 cmdlet通过一个定义良好的接口来检索相应的数据(您需要使用Windows 8.1或Server 2012主机运行CMDlet,但打印服务器“重新运行他们反对可能是一个旧版本) Win32_Printer类来检索打印机列表,并使用Win32_TCPIPPrinterPort类来检索具有WMI查询function的语言(例如VBScript )中的HostAddress值, 请注意,如果您的打印机使用特定供应商而不是Standard TCP/IP Port ,则没有统一的方法来执行此操作。 您将需要去弄清楚这一切,尽pipe这些信息可能会隐藏在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\<yourporttype>registry子项中。
请注意,虽然理论上可以使用RPC远程访问Linux站点,但是使用NRPE传输数据可能会更好( 使用外部脚本查看NSClient ++ )