Encontre todas as impressoras em uma rede ou pelo menos o IP das impressoras

1

Atualmente, estou trabalhando em um projeto que obtém informações de uma impressora via snmp protocol (nome, páginas impressas, níveis de toner ...).

Atualmente, está funcionando quando eu tenho um endereço IP da impressora, mas tenho que aplicar isso em uma empresa muito grande (significa uma rede enorme) e preciso de algo que eu possa encontrar todas as impressoras na rede.

Isso deve ser executado em um sistema baseado no Windows em um script em lote.

Eu sei que posso encontrar todos os IP's da rede com arp -a ou que é possível procurar por todos os IPs para encontrar uma impressora.

Mas eu tenho uma máscara de sub-rede de 255.0.0.0 , o que significa que existem 16 milhões (16581375) de IP, que eu tenho que pesquisar, o que é muito intenso e demorado.

No painel de controle do Windows, há uma opção add network or wireless printer em que uma lista de todas as impressoras de rede é compartilhada.

Não consigo encontrar nenhuma informação sobre como eles conseguem essa lista ou qualquer tipo de código-fonte.

Alguém sabe como as janelas conseguem essa lista?

Ou existe uma maneira melhor de obter uma lista de todas as impressoras de rede, em vez de fazer o bruteforcing de toda a rede para impressoras?

E quando a bruteforcing é a única solução, eu preciso de uma maneira melhor de verificar se o IP pertence a uma impressora porque enviar um comando snmp para qualquer IP não é o melhor caminho.

    
por ahdgfd 02.08.2017 / 11:24

1 resposta

0

A partir do Windows Vista, acredito que você deve usar Descoberta Dinâmica de Serviços da Web (WS-Discovery). Você provavelmente precisará escrever um programa para isso.

De Wikipedia WS-Discovery :

Web Services Dynamic Discovery (WS-Discovery) is a technical specification that defines a multicast discovery protocol to locate services on a local network. It operates over TCP and UDP port 3702 and uses IP multicast address 239.255.255.250. As the name suggests, the actual communication between nodes is done using web services standards, notably SOAP-over-UDP.

A Microsoft fornece a biblioteca de descoberta: Uma biblioteca de classes .NET que implementa o protocolo WS-Discovery ( link ).

Você também pode encontrar um exemplo de programa C ++ em Exemplo de descoberta de serviço da Web (WS-Discovery) , descrito como:

This sample shows how to use the Web Service Discovery API to perform WS-Discovery routines by using the IWSDiscoveryProvider, IWSDiscoveryProviderNotify, IWSDiscoveryPublisher and IWSDiscoveryPublisherNotify interfaces.

Algumas referências que encontrei:

por 02.08.2017 / 13:09