Pergunta

Para ajudar os usuários, gostaria do meu código para descobrir bancos de dados da Oracle na LAN. Pensei em fazer isso detectando todos os hosts e verificando cada host para ver se ele está ouvindo na porta padrão da Oracle.

Alguma idéia de como fazer isso? De preferência em Java, mas qualquer idioma ou algoritmo faria.

Foi útil?

Solução

Você está usando DHCP? Nesse caso, seu servidor DHCP possui uma lista dos arrendamentos que ele desmaiou. Isso deve fazer você para uma lista de hosts na LAN. Em seguida, tente abrir uma conexão com a porta Oracle em cada um desses hosts e veja se ela aceita a conexão.

Deve ser bastante simples de implementar como script de shell com meia dúzia de linhas ou mais. Java parece um exagero para algo assim. Faça um loop através do arquivo de arrendamentos, pegue o IP de cada arrendamento e telnet até a porta Oracle; Se conectar, desconecte e imprima o IP para o padrão.

Outras dicas

Se você deseja permanecer independente da plataforma e, a menos que tenha acesso a algum tipo de banco de dados que lista os hosts, a única maneira de obter uma lista é experimentar cada endereço IP na rede local - também pode tentar se conectar ao Porta Oracle em cada um deles.

Existem muitos problemas com esta abordagem:

  • Pesquisará apenas a rede local, que pode ser apenas uma pequena parte da LAN (em caso de grandes empresas com muitas sub -redes)
  • Pode levar muito tempo (você definitivamente deseja reduzir o tempo limite para as tentativas de conexão, mas se alguém configurou sua LAN como uma rede de classe A, ainda levará uma eternidade)
  • Pode desencadear todos os tipos de alertas, como firewalls pessoais dos usuários de desktop e sistemas de detecção de intrusões - porque você está fazendo exatamente a mesma coisa que alguém tentando explorar um buraco de segurança nos servidores Oracle faria

Como Brazzy aponta, é provável que a digitalização para hosts cause problemas, especialmente se houver um bug no seu scanner.

Uma abordagem melhor pode ser que os proprietários dos bancos de dados os registrem em algum lugar, por exemplo, em um serviço DNS local (ou o Oracle possui suporte ao Zeroconf?), Ou simplesmente em alguma página da Web ou wiki da intranet.

Você registra melhor os nomes/endereços do SID em algum servidor com um endereço fixo (talvez com um serviço da web simples) e, em seguida, consulte a lista a partir daí. Outra abordagem é o Bruteforce One (explicado por @brazzy) digitalizando uma ou mais sub -redes, mas isso não é realmente uma coisa boa a se fazer.

Caso você esteja procurando uma ferramenta Loo@lan pode fazer isso por você. Infelizmente, não há fonte disponível ...

Todas essas respostas inteligentes são as razões pelas quais muitas empresas não usam a porta padrão. Usar uma porta diferente para cada banco de dados é totalmente possível, você sabe.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top