Как определить хосты в моей локальной сети? - PullRequest
2 голосов
/ 29 декабря 2008

Чтобы помочь пользователям, я бы хотел, чтобы мой код обнаруживал базы данных Oracle в локальной сети. Я решил сделать это, сначала обнаружив все узлы, а затем проверив каждый узел, чтобы узнать, прослушивает ли он порт Oracle по умолчанию.

Есть идеи, как это сделать? Желательно на Java, но подойдет любой язык или алгоритм.

Ответы [ 6 ]

2 голосов
/ 29 декабря 2008

Вы используете DHCP? Если это так, у вашего DHCP-сервера есть список арендных договоров, которые он выдал. Это должно сделать вам список хостов в локальной сети. Затем попробуйте открыть соединение с портом Oracle на каждом из этих хостов и посмотреть, принимает ли оно соединение.

Это должно быть довольно просто реализовать в виде сценария оболочки с полдюжины строк или около того. Java кажется излишним для чего-то подобного. Прокрутите файл аренды, извлеките IP-адрес из каждой аренды и подключитесь к порту Oracle через telnet; если он подключается, отключите и распечатайте IP на стандартный выход.

1 голос
/ 29 декабря 2008

Если вы хотите оставаться независимым от платформы, и если у вас нет доступа к какой-либо базе данных, в которой перечислены хосты, единственный способ получить список - это попробовать каждый IP-адрес в локальной сети - возможно, стоит попробовать подключитесь к порту Oracle на каждом из них.

Есть много проблем с этим подходом:

  • Будет выполнять поиск только по локальной сети, которая может быть только небольшой частью локальной сети (в случае крупных компаний с большим количеством подсетей)
  • Может занять много времени (вы определенно хотите сократить время ожидания для попыток подключения, но если кто-то настроил его локальную сеть как сеть класса A, это все равно будет длиться вечно)
  • Может вызывать все виды предупреждений, таких как персональные брандмауэры пользователей настольных компьютеров и системы обнаружения вторжений, потому что вы делаете то же самое, что и тот, кто пытается использовать дыру в безопасности на серверах Oracle,
0 голосов
/ 05 января 2009

Вам лучше зарегистрировать имена / адреса SID на некотором сервере с фиксированным адресом (возможно, с помощью простого веб-сервиса), а затем запросить список оттуда. Другой подход - грубый (объясняется @brazzy) путем сканирования одной или нескольких подсетей, но это не очень хорошая вещь.

0 голосов
/ 30 декабря 2008

Все эти умные ответы являются причинами, по которым многие компании не используют порт по умолчанию. Знаете, использование разных портов для каждой базы данных вполне возможно.

0 голосов
/ 29 декабря 2008

Как отмечает Brazzy, сканирование хостов может вызвать проблемы, особенно если в вашем сканере есть ошибка.

Лучшим подходом может быть заставить владельцев баз данных где-то зарегистрировать их, например, в локальной службе DNS (или у Oracle есть поддержка zeroconf?), Или просто на какой-либо внутренней странице или в вики.

0 голосов
/ 29 декабря 2008

Если вы ищете инструмент Loo @ Lan может сделать это за вас. К сожалению, источник недоступен ...

...