Pregunta

Para ayudar a los usuarios, me gustaría que mi código para descubrir las bases de datos de Oracle en la LAN. Pensé que hacer esto mediante la detección de todos los hosts primero, a continuación, comprobar cada host para ver si se está escuchando en el puerto por defecto de Oracle.

¿Alguna idea de cómo ir sobre esto? Preferiblemente en Java, pero cualquier lenguaje o algoritmo harían.

¿Fue útil?

Solución

¿Está utilizando DHCP? Si es así, el servidor DHCP tiene una lista de los contratos de arrendamiento que ha pasado a cabo. Eso debería hacer por una lista de hosts en la LAN. A continuación, intente abrir una conexión con el puerto de Oracle en cada uno de los anfitriones y ver si se acepta la conexión.

Debe ser bastante fácil de implementar como un script de shell con media docena de líneas o menos. Java parece un exceso de algo como esto. Lazo a través del archivo de arriendos, agarrar el IP de cada contrato de arrendamiento, y telnet al puerto de Oracle; si se conecta, desconecta e imprimir la IP en la salida estándar.

Otros consejos

Si desea permanecer plataforma independiente, y menos que tenga acceso a algún tipo de base de datos que enumera los anfitriones, la única manera de conseguir una lista es tratar cada dirección IP en la red local - puede ser que también intente conecte al puerto de Oracle en cada uno de ellos.

Hay un montón de problemas con este enfoque:

  • sólo buscará a través de la red local, que sólo puede ser una pequeña parte de la LAN (en el caso de las grandes empresas con una gran cantidad de subredes)
  • Puede tomar mucho tiempo (que debe de reducir el tiempo de espera para los intentos de conexión, pero si alguien ha configurado su red local como una red de clase, aún se requerirá siempre)
  • ¿Puede desencadenar todo tipo de alertas, como los cortafuegos personales de los usuarios de escritorio y sistemas de detección de intrusos - porque estás haciendo exactamente lo mismo alguien que intenta explotar un agujero de seguridad en los servidores de Oracle haría

Como brazzy señala, la exploración de los ejércitos es probable que cause problemas, sobre todo si hay un error en el escáner.

Un mejor enfoque puede ser conseguir que los propietarios de las bases de datos para registrar en algún lugar, por ejemplo en un servicio de DNS local (o no Oracle han apoyar zeroconf?), O simplemente en alguna página web intranet o wiki.

Es mejor que se registra el SID nombres / direcciones a algún servidor con una dirección fija (tal vez con un simple servicio web), y luego consultar la lista de allí. Otro enfoque es el de fuerza bruta (que se explica por @brazzy) mediante el escaneo de una o varias subredes, pero esto no es realmente una buena cosa que hacer.

Si estás buscando una herramienta Loo @ Lan puede hacer esto para usted. Desafortunadamente no hay ninguna fuente disponible ...

Todas estas respuestas inteligentes son las razones por las que muchas empresas no utilizan el puerto por defecto. El uso de un puerto diferente para cada base de datos es totalmente posible, ya sabes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top