Obtenha IPs de impressoras no servidor de impressão do Windows via SNMP \ Script

1

Estou configurando um servidor icinga para monitorar o status da impressora via SNMP (níveis de toner, erros, esse tipo de coisa). Todas as impressoras são acessíveis através de um servidor de impressão de janelas compartilhadas (a impressora é adicionada às máquinas clientes via \ SERVER \ Printer_Share). Embora eu possa consultar as impressoras por IP diretamente via SNMP, isso não me diz nada sobre o nome delas. É possível consultar o servidor de impressão do Windows a partir do Linux para produzir uma saída semelhante a:

Shared Printer 1 -> IP_1
Shared Printer 2 -> IP_2
Shared Printer 3 -> IP_3
Shared Printer 4 -> IP_4

Com essa informação, posso escrever um script para criar arquivos de configuração icinga. Existem centenas de impressoras, então não estou fazendo isso manualmente. Eu não estou pedindo a ninguém para escrever um roteiro para mim, mas sim me aponte na direção certa.

    
por windowslinux 15.04.2014 / 14:34

1 resposta

3

Suas opções:

1. avaliar dados do registro

  • consulta as subchaves de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers para obter uma lista de impressoras
  • corresponde ao valor port em relação a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports
  • avalie os valores HostName e IPAddress na chave correspondente

2. use o Powershell

  • semelhante a 1. mas use Get-Printer e Get-PrinterPort Os cmdlets devem recuperar os respectivos dados por meio de uma interface bem definida (você precisaria usar um Windows 8.1 ou Server Hosts de 2012 para executar os CMDlets, mas o servidor de impressão em que você os está executando pode ser uma versão mais antiga)

3. use o WMI

  • semelhante a 1. e 2., mas use o WMI Win32_Printer classe para recuperar uma lista de impressoras e o Win32_TCPIPPrinterPort classe para recuperar o valor HostAddress em sua linguagem de escolha com base em consulta WMI (por exemplo, VBScript )

Observe que não há uma maneira uniforme de fazer isso se suas impressoras estiverem usando algo específico do fornecedor em vez do Standard TCP/IP Port . Você precisaria ir e descobrir tudo, embora as chances sejam de que essas informações sejam enterradas, algumas delas na subchave de registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\<yourporttype> .

Note que enquanto você, teoricamente, poderia remontar coisas de uma estação Linux usando RPC, provavelmente seria uma idéia melhor ter o NRPE transportando os dados (dê uma olhada em NSClient ++ usando scripts externos )

    
por 15.04.2014 / 15:11