2

ユーザーを支援するために、コードでLAN上のOracleデータベースを検出したいと思います。これを行うには、最初にすべてのホストを検出し、次に各ホストをチェックして、Oracleのデフォルトポートでリッスンしているかどうかを確認します。

これについてどうやって行くのかアイデアはありますか?できればJavaで。ただし、どの言語やアルゴリズムでもかまいません。

4

6 に答える 6

2

DHCP を使用していますか? その場合、DHCP サーバーには、渡されたリースのリストがあります。これで、LAN 上のホストのリストが表示されます。次に、これらの各ホストで Oracle ポートへの接続を開き、接続が受け入れられるかどうかを確認します。

半ダースほどの行でシェル スクリプトとして実装するのは非常に簡単なはずです。Javaは、このようなものにはやり過ぎのようです。リース ファイルをループし、各リースから IP を取得して、Oracle ポートに telnet します。接続されている場合は、切断して IP を標準出力に出力します。

于 2008-12-29T15:31:43.383 に答える
1

プラットフォームに依存しないようにしたい場合、およびホストを一覧表示するある種のデータベースにアクセスできない限り、一覧を取得する唯一の方法は、ローカルネットワーク内の各IPアドレスを試すことです。それぞれのOracleポート。

このアプローチには多くの問題があります。

  • ローカルネットワークのみを検索します。ローカルネットワークはLANのごく一部である可能性があります(サブネットが多数ある大企業の場合)
  • 長い時間がかかる可能性があります(接続試行のタイムアウトを確実に減らしたいと思いますが、誰かが自分のLANをクラスAネットワークとして構成した場合でも、それは永遠にかかります)
  • デスクトップユーザーのパーソナルファイアウォールや侵入検知システムなど、あらゆる種類のアラートをトリガーできます。これは、Oracleサーバーのセキュリティホールを悪用しようとしている人とまったく同じことをしているためです。
于 2008-12-29T14:32:40.193 に答える
0

あなたがツールを探している場合、Loo@Lanはあなたのためにこれを行うことができます。残念ながら、利用可能なソースはありません...

于 2008-12-29T14:26:20.363 に答える
0

brazzy が指摘しているように、特にスキャナーにバグがある場合、ホストのスキャンは問題を引き起こす可能性があります。

より良いアプローチは、データベースの所有者にデータベースをどこかに登録してもらうことです。たとえば、ローカルの DNS サービス (ま​​たは Oracle は zeroconf をサポートしていますか?)、または単純にイントラネットの Web ページや wiki などです。

于 2008-12-29T14:59:47.550 に答える
0

SID名/アドレスを固定アドレス(おそらく単純なWebサービスを使用)でサーバーに登録し、そこからリストを照会することをお勧めします。もう 1 つのアプローチは、1 つ以上のサブネットをスキャンすることによるブルートフォース アプローチ (@brazzy によって説明されています) ですが、これは実際には良いことではありません。

于 2009-01-05T01:07:02.753 に答える
-1

これらの賢明な答えはすべて、多くの企業がデフォルトのポートを使用しない理由です。データベースごとに異なるポートを使用することは完全に可能です。

于 2008-12-30T14:32:49.537 に答える