Frage

Um Benutzern zu helfen, möchte ich, dass mein Code Oracle -Datenbanken auf der LAN entdeckt. Ich dachte, dies zu tun, indem ich zuerst alle Hosts erkannte und dann jeden Host überprüfte, um festzustellen, ob er den Standardport von Oracle anhört.

Irgendwelche Ideen, wie man das macht? Vorzugsweise in Java, aber jede Sprache oder jeder Algorithmus.

War es hilfreich?

Lösung

Verwenden Sie DHCP? In diesem Fall verfügt Ihr DHCP -Server über eine Liste der Mietverträge, die er ohnmächtig wurde. Das sollte Sie für eine Liste von Hosts auf dem LAN tun. Öffnen Sie dann eine Verbindung zum Oracle -Port auf jedem dieser Hosts und prüfen Sie, ob sie die Verbindung akzeptiert.

Es sollte ziemlich einfach sein, als Shell -Skript mit einem halben Dutzend Zeilen oder so zu implementieren. Java scheint für so etwas Overkill zu sein. Schleifen Sie die Leasingdatei durch, schnappen Sie sich die IP von jedem Mietvertrag und Telnet zum Oracle -Port. Wenn es eine Verbindung herstellt, trennen Sie die IP und drucken Sie die IP so aus.

Andere Tipps

Wenn Sie plattformunabhängig bleiben möchten und nicht auf eine Art von Datenbank zugreifen, die die Hosts auflistet, besteht die einzige Möglichkeit, eine Liste zu erhalten, um jede IP -Adresse im lokalen Netzwerk zu versuchen. Oracle Port auf jedem von ihnen.

Es gibt viele Probleme mit diesem Ansatz:

  • Ich suche nur durch das lokale Netzwerk, das nur ein kleiner Teil des LAN sein kann (bei großen Unternehmen mit vielen Subnetzen)
  • Kann lange dauern (Sie möchten definitiv die Auszeit für die Verbindungsversuche reduzieren, aber wenn jemand seine LAN als Netzwerk eines Klasse A konfiguriert hat, wird es immer noch ewig dauern).
  • Kann alle Arten von Warnungen auslösen, wie z.

Wie Brazzy betont, wird das Scannen nach Hosts wahrscheinlich Probleme verursachen, insbesondere wenn Sie einen Fehler in Ihrem Scanner enthalten.

Ein besserer Ansatz kann darin bestehen, die Eigentümer der Datenbanken dazu zu bringen, sie irgendwo zu registrieren, beispielsweise in einem lokalen DNS -Dienst (oder hat Oracle Zeroconf -Unterstützung?) Oder einfach auf einer Intranet -Webseite oder einer Wiki.

Sie registrieren Sie die SID -Namen/-adressen besser an einem Server mit einer festen Adresse (möglicherweise mit einem einfachen Webdienst) und befragen dann die Liste von dort aus. Ein anderer Ansatz ist der Bruteforce One (erklärt von @Bazzy) durch das Scannen eines oder mehrerer Subnetze, aber das ist nicht wirklich eine gute Sache.

Falls Sie nach einem Werkzeug suchen Loo@lan kann das für Sie tun. Leider gibt es keine Quelle ...

All diese intelligenten Antworten sind die Gründe, warum viele Unternehmen den Standardport nicht verwenden. Die Verwendung eines anderen Ports für jede Datenbank ist durchaus möglich, wissen Sie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top