Varrer a rede em busca de um mac address é possivel?  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
mchiareli
JavaEvangelist
[Avatar]

Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline

É possivel recuperar todos os mac address em uma rede, ou varrer a rede em busca de uma mac address especifico, já vi algumas aplicações que fazer isso, alguem tem ideia de como implementar isso em java?

codifica.wordpress.com
[WWW] [MSN]
genildof
Debugger
[Avatar]

Membro desde: 30/09/2006 09:38:16
Mensagens: 70
Localização: Campo Grande - MS
Offline

Olá,

Acho o java não tem suporte nativo à tratamento de endereços MAC, me corrijam por favor se estiver enganado.

Supondo que use o Windows, apartir do java EU invocaria os comandos do SO, para coletar os dados necessários:

> arp -d * -> limpa cache arp
> ping <endereço de broadcast da sua rede> -> popula tabela arp com os MAC dos hosts ativos
> arp -a -> mostra o cache arp

E então trataria essa tabela coletada.

Só vai funcionar para a LAN em que estiver, os pacotes de broadcast não são propagados para fora da rede.

/genildo

/genildof.
[WWW] [MSN]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

Existe a classe (java 6) NetworkInterface que permite pegar o MAC local. Não sei se permite esse tipo de query que procura. Mas dê uma olhada...

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Só lembrando que :

- arp -d * só consegue ser executado se o usuário for administrador da máquina (e no caso do Windows Vista é necessário usar um "Command Prompt" com permissão especial de administrador);

- em algumas redes você, ao tentar pingar o endereço de broadcast, não obtém resposta de nenhuma máquina Windows (só de algumas máquinas Unix antigas, que não têm essas frescuras de segurança).

Isso é meio chatinho mesmo; instale o Network Monitor 3.1 (que você pode baixar do site da Microsoft) e veja se ele dá suporte a esse tipo de coisa que você quer.
[WWW]
mchiareli
JavaEvangelist
[Avatar]

Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline

eu realmente precisava fazer isso sem depender do SO...

codifica.wordpress.com
[WWW] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

mchiareli wrote:eu realmente precisava fazer isso sem depender do SO...


Há tr~es jeitos para "não depender do SO".

a) Ou você não faz o que não existe pronto no Java (ou seja, muda seu requisito)

b) Ou, pelo contrário, usa um monte de código (talvez código nativo, ou escrito em linguagem de script, ou sei lá o quê) que tem um monte de ifs para checar uma porção de sistemas operacionais diferentes, e testa em todos eles.
Eu tenho de fazer muito isso, e isso é terrivelmente tedioso, mas o requisito é esse...

c) Ou você tem a sorte de encontrar (ou o dinheiro para comprar) uma biblioteca que tem esse monte de código nativo desenvolvido para N sistemas operacionais que faz isso para você.


[WWW]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Além do jeito B do thingol que não tão difícil assim para um programador que conheça Java, C e TCP/IP,

você pode simplesmente criar um aplicativozinho simples do tipo daemon que rode em todas as máquinas. O tal aplicativozinho deve enviar ao servidor o MAC Address da máquina em que está rodando. Mais simples e rápido de fazer do que isto só combinando o ipconfig com o net send

[]s
Luca



Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
mchiareli
JavaEvangelist
[Avatar]

Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline

Luca wrote:Olá

Além do jeito B do thingol que não tão difícil assim para um programador que conheça Java, C e TCP/IP,

você pode simplesmente criar um aplicativozinho simples do tipo daemon que rode em todas as máquinas. O tal aplicativozinho deve enviar ao servidor o MAC Address da máquina em que está rodando. Mais simples e rápido de fazer do que isto só combinando o ipconfig com o net send

[]s
Luca




Não tem como fazer dessa maneira, nao vou buscar pcs na rede, mas alguns dispositivos, como impressoras e leitores de radio frequencia.

codifica.wordpress.com
[WWW] [MSN]
mchiareli
JavaEvangelist
[Avatar]

Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline

thingol wrote:
mchiareli wrote:eu realmente precisava fazer isso sem depender do SO...


Há tr~es jeitos para "não depender do SO".

a) Ou você não faz o que não existe pronto no Java (ou seja, muda seu requisito)

b) Ou, pelo contrário, usa um monte de código (talvez código nativo, ou escrito em linguagem de script, ou sei lá o quê) que tem um monte de ifs para checar uma porção de sistemas operacionais diferentes, e testa em todos eles.
Eu tenho de fazer muito isso, e isso é terrivelmente tedioso, mas o requisito é esse...

c) Ou você tem a sorte de encontrar (ou o dinheiro para comprar) uma biblioteca que tem esse monte de código nativo desenvolvido para N sistemas operacionais que faz isso para você.


Acho que vou tentar partir para a alternativa b.

codifica.wordpress.com
[WWW] [MSN]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

mchiareli wrote:Não tem como fazer dessa maneira, nao vou buscar pcs na rede, mas alguns dispositivos, como impressoras e leitores de radio frequencia.


Ainda acho que é possível e mais rápido de fazer a solução do daemon que inclusive pode dialogar com os periféricos por outros meios fora da rede como através de portas USB ou seriais. Mas se sua equipe de desenvolvimento atende bem ao que citei, a solução B do thingol é perfeitamente factível.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
Dieval Guizelini
Virtual Machine Man
[Avatar]

Membro desde: 05/07/2006 14:39:44
Mensagens: 570
Localização: Curitiba - PR
Offline

Achei esse código aqui, talvez te ajude:



fonte: http://forum.java.sun.com/thread.jspa?threadID=615562&messageID=3424234

fw

Ps: esse é o quarto tópico que encontro fantasticas contribuições do mestreshake... apenas para registrar, o guj não é forum do orkut.

Sun Certified Java Programmer 5.0
[WWW]
mchiareli
JavaEvangelist
[Avatar]

Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline

Luca wrote:Olá

mchiareli wrote:Não tem como fazer dessa maneira, nao vou buscar pcs na rede, mas alguns dispositivos, como impressoras e leitores de radio frequencia.


Ainda acho que é possível e mais rápido de fazer a solução do daemon que inclusive pode dialogar com os periféricos por outros meios fora da rede como através de portas USB ou seriais. Mas se sua equipe de desenvolvimento atende bem ao que citei, a solução B do thingol é perfeitamente factível.

[]s
Luca


Então o problema eh que nao terei micros ligado estes dispositivos para pegar a configuração e enviar ao servidor, por exemplo a impressora pode ficar no meio da linha de produção sem nenhum pc ligada diretamente a rede, é impressoras do tipo zebra e semelhantes, os leitores de radio frequencia tb vão ligados a rede diretamente sem auxilio de pc, por isso disse que nao consigo utilizar esta solução...

Estes dispositos tem um padrão de mac address, por isso eu precisava "varrer" a rede em busca de determinado padrão de dispositivo, para descobrir o ip desta impressora.

Vai ser algo mais ou menos assim, os caras plugam varias impressoras pelo produção, o software é capaz de localizar as impressores e informar o ip atual, o mesmo funcionamento para os leitores.

Esses programas tipo networkmagic fazem isso, conseguem recuperar todos os dispositivos da rede, eu preciso algo desse tipo.

codifica.wordpress.com
[WWW] [MSN]
mchiareli
JavaEvangelist
[Avatar]

Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline

Dieval Guizelini wrote:Achei esse código aqui, talvez te ajude:



fonte: http://forum.java.sun.com/thread.jspa?threadID=615562&messageID=3424234

fw

Ps: esse é o quarto tópico que encontro fantasticas contribuições do mestreshake... apenas para registrar, o guj não é forum do orkut.


Obrigado , vou dar uma olhada nesse código para ver se ajuda.


codifica.wordpress.com
[WWW] [MSN]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

mchiareli wrote:Então o problema eh que nao terei micros ligado estes dispositivos para pegar a configuração e enviar ao servidor, por exemplo a impressora pode ficar no meio da linha de produção sem nenhum pc ligada diretamente a rede, é impressoras do tipo zebra e semelhantes, os leitores de radio frequencia tb vão ligados a rede diretamente sem auxilio de pc, por isso disse que nao consigo utilizar esta solução...


Agora entendi. Talvez tivesse sido melhor você ter explicado isto logo.

Vocês usam ou pretendem usar algum serviço de diretório do tipo LDAP ou Active Directory? Pode ser que facilite muitas coisas e de passagem facilite muito a resolução do seu problema caso o MAC Address esteja no esquema.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
mchiareli
JavaEvangelist
[Avatar]

Membro desde: 04/04/2006 15:14:50
Mensagens: 397
Offline

Luca wrote:Olá

mchiareli wrote:Então o problema eh que nao terei micros ligado estes dispositivos para pegar a configuração e enviar ao servidor, por exemplo a impressora pode ficar no meio da linha de produção sem nenhum pc ligada diretamente a rede, é impressoras do tipo zebra e semelhantes, os leitores de radio frequencia tb vão ligados a rede diretamente sem auxilio de pc, por isso disse que nao consigo utilizar esta solução...


Agora entendi. Talvez tivesse sido melhor você ter explicado isto logo.

Vocês usam ou pretendem usar algum serviço de diretório do tipo LDAP ou Active Directory? Pode ser que facilite muitas coisas e de passagem facilite muito a resolução do seu problema caso o MAC Address esteja no esquema.

[]s
Luca


Acho que devia ter postado essa explicação no inicio, mas agora esta ai..rs

Nao pretendemos usar nenhum serviço de diretorio.

a ideia eh deixar automagico msm, plugou o dispositivo na rede o software faz uma busca e lista, sem nenhum tipo previo de registro.

codifica.wordpress.com
[WWW] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team