Domanda

Per aiutare gli utenti, vorrei il mio codice per scoprire i database Oracle sulla LAN. Ho pensato di fare questo primo rilevamento di tutti gli host, poi controllando ogni host per vedere se è in ascolto sulla porta predefinita di Oracle.

Tutte le idee su come andare su questo? Preferibilmente in Java, ma qualsiasi lingua o algoritmo farebbero.

È stato utile?

Soluzione

Si sta utilizzando il DHCP? In tal caso, il server DHCP ha una lista delle locazioni è svenuto. Che dovrebbe fare voi per un elenco di host della LAN. Poi provare ad aprire un collegamento alla porta di Oracle su ciascuno di questi host e vedere se accetta la connessione.

Dovrebbe essere abbastanza semplice da implementare come uno script di shell con una mezza dozzina di righe o giù di lì. Java sembra eccessivo per qualcosa di simile. Loop attraverso il file locazioni, afferrare il IP da ogni contratto di locazione, e telnet alla porta di Oracle; se si collega, scollegare e stampare il IP standard output.

Altri suggerimenti

Se si vuole rimanere indipendente dalla piattaforma, e se non si ha accesso a una sorta di banca dati in cui sono elencati i padroni di casa, l'unico modo per ottenere una lista è quello di provare ogni indirizzo IP nella rete locale - potrebbe anche cercare di collegarsi alla porta di Oracle su ciascuna di esse.

Ci sono un sacco di problemi con questo approccio:

  • cercherà solo attraverso la rete locale, che può essere solo una piccola parte della rete LAN (in caso di grandi aziende con un sacco di sottoreti)
  • Può richiedere molto tempo (se lo desiderate ridurre il timeout per i tentativi di connessione, ma se qualcuno ha configurato la sua LAN come una classe Una rete, ci vorrà ancora per sempre)
  • può innescare tutti i tipi di avvisi, quali firewall personali degli utenti desktop e sistemi di rilevamento delle intrusioni - perché si sta facendo esattamente la stessa cosa qualcuno che cerca di sfruttare una falla di sicurezza nel server Oracle avrebbe fatto

Come sottolinea brazzy, la scansione per gli host può causare problemi, soprattutto se v'è un errore nello scanner.

Un approccio migliore potrebbe essere quello di ottenere i proprietari delle banche dati per la registrazione da qualche parte, per esempio, in un servizio DNS locale (o se Oracle ha zeroconf sostenere?), O semplicemente su qualche pagina web intranet o wiki.

È meglio registrare il SID nomi / indirizzi ad alcuni server con un indirizzo fisso (magari con un semplice servizio web), e poi interrogare l'elenco da lì. Un altro approccio è il bruteforce uno (spiegato da @brazzy) mediante la scansione di uno o più sottoreti, ma questo non è davvero una buona cosa da fare.

Nel caso in cui siete alla ricerca di uno strumento Loo @ Lan può fare questo per voi. Purtroppo non c'è fonte disponibile ...

Tutte queste risposte intelligenti sono i motivi per cui molte aziende non utilizzano la porta di default. Utilizzando una porta diversa per ogni database è del tutto possibile, lo sai.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top