Question

Pour aider les utilisateurs, je voudrais mon code pour découvrir les bases de données Oracle sur le réseau local. Je pensais le faire en premier détecter tous les hôtes, puis vérifier chaque hôte pour voir si elle est à l'écoute sur le port par défaut d'Oracle.

Toutes les idées comment aller à ce sujet? De préférence en Java, mais une langue ou d'un algorithme feraient.

Était-ce utile?

La solution

Vous utilisez DHCP? Si oui, votre serveur DHCP a une liste des baux qu'elle a évanouis. Cela devrait vous faire une liste des hôtes sur le réseau local. Essayez ensuite d'ouvrir une connexion au port Oracle sur chacun de ces hôtes et voir si elle accepte la connexion.

Il devrait être assez simple à mettre en œuvre en tant que script shell avec une demi-douzaine de lignes environ. Java semble overkill pour quelque chose comme ça. Boucle à travers le fichier de baux, saisissez l'adresse IP de chaque location et telnet au port Oracle; si elle se connecte, débranchez et imprimez le IP vers la sortie standard.

Autres conseils

Si vous voulez rester plate-forme indépendante, et à moins que vous avez accès à une sorte de base de données qui répertorie les hôtes, la seule façon d'obtenir une liste est d'essayer chaque adresse IP dans le réseau local - pourrait aussi bien essayer de se connecter au port Oracle sur chacun d'eux.

Il y a beaucoup de problèmes avec cette approche:

  • Est-ce que la recherche à travers le réseau local, ce qui ne peut être qu'une petite partie du réseau local (dans le cas des grandes entreprises avec beaucoup de sous-réseaux)
  • peut prendre beaucoup de temps (vous voulez vraiment réduire le délai d'attente pour les tentatives de connexion, mais si quelqu'un a configuré son réseau local en tant que réseau de classe A, il faudra encore pour toujours)
  • Peut déclencher toutes sortes d'alertes, tels que les pare-feu et les systèmes de détection d'intrusion des utilisateurs de bureau - parce que vous faites quelqu'un exactement la même chose en essayant d'exploiter un trou de sécurité dans les serveurs Oracle ferait

Comme le souligne brazzy sur, la numérisation des hôtes est susceptible de causer des problèmes, surtout s'il y a un bogue dans votre scanner.

Une meilleure approche peut être d'obtenir les propriétaires des bases de données pour les enregistrer quelque part, par exemple dans un service DNS local (ou ne Oracle ont en charge zeroconf?), Ou tout simplement sur une page Web intranet ou wiki.

Vous feriez mieux enregistrer les noms SID / adresses à un serveur avec une adresse fixe (peut-être avec un service web simple), puis interroger la liste à partir de là. Une autre approche est celle de bruteforce (expliqué par @brazzy) en balayant un ou plusieurs sous-réseaux, mais ce n'est pas vraiment une bonne chose à faire.

Si vous cherchez un outil Loo @ Lan peut le faire pour vous. Malheureusement, il n'y a pas de source disponible ...

Toutes ces réponses intelligentes sont les raisons pour lesquelles de nombreuses entreprises n'utilisent pas le port par défaut. L'utilisation d'un port différent pour chaque base de données est tout à fait possible, vous savez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top