문제

사용자를 돕기 위해 코드가 LAN에서 Oracle 데이터베이스를 발견하기를 원합니다. 먼저 모든 호스트를 감지 한 다음 각 호스트에서 Oracle의 기본 포트에서 듣고 있는지 확인 하여이 작업을 수행한다고 생각했습니다.

이것에 관한 방법이 있습니까? 바람직하게는 Java에서는 있지만 모든 언어 나 알고리즘이 가능합니다.

도움이 되었습니까?

해결책

DHCP를 사용하고 있습니까? 그렇다면 DHCP 서버에는 전달 된 임대 목록이 있습니다. 그것은 당신이 LAN의 호스트 목록을 위해해야합니다. 그런 다음 각 호스트에서 Oracle 포트에 대한 연결을 열고 연결을 수락하는지 확인하십시오.

6 줄 정도의 줄이있는 쉘 스크립트로 구현하는 것은 매우 간단해야합니다. Java는 이런 식으로 과도하게 보입니다. 임대 파일을 통과하고 각 임대에서 IP를 잡고 텔넷을 Oracle 포트로 가져옵니다. 연결되면 IP를 분리하고 인쇄하여 표준 아웃으로 인쇄합니다.

다른 팁

플랫폼 독립성을 유지하려면 호스트를 나열하는 일부 종류의 데이터베이스에 액세스 할 수 없다면 목록을 얻는 유일한 방법은 로컬 네트워크에서 각 IP 주소를 시도하는 것입니다. 그들 각각에 오라클 포트.

이 접근법에는 많은 문제가 있습니다.

  • LAN의 작은 부분 일 수있는 로컬 네트워크를 통해서만 검색합니다 (많은 서브넷이있는 대기업의 경우)
  • 시간이 오래 걸릴 수 있습니다 (연결 시도의 시간 초과를 줄이려고하지만 누군가가 LAN을 클래스 A 네트워크로 구성한 경우에도 여전히 영원히 걸릴 것입니다).
  • 데스크탑 사용자의 개인 방화벽 및 침입 탐지 시스템과 같은 모든 종류의 경고를 트리거 할 수 있습니다. Oracle 서버의 보안 구멍을 활용하려는 사람이 정확히 같은 작업을 수행하기 때문입니다.

Brazzy가 지적했듯이, 특히 스캐너에 버그가있는 경우 호스트를 스캔하면 문제가 발생할 수 있습니다.

더 나은 접근 방식은 데이터베이스의 소유자가 로컬 DNS 서비스 (또는 Oracle이 Zeroconf 지원을 받는가?) 또는 단순히 인트라넷 웹 페이지 또는 위키에 등록하도록하는 것입니다.

SID 이름/주소를 고정 된 주소 (간단한 웹 서비스 포함)로 일부 서버에 등록한 다음 목록을 쿼리하는 것이 좋습니다. 또 다른 접근법은 하나 이상의 서브넷을 스캔하여 Bruteforce (@Brazzy에 의해 설명 됨)이지만 실제로는 좋은 일이 아닙니다.

도구를 찾고있는 경우 loo@lan 당신을 위해 이것을 할 수 있습니다. 불행히도 사용할 수있는 소스가 없습니다 ...

이러한 모든 스마트 답변은 많은 회사가 기본 포트를 사용하지 않는 이유입니다. 각 데이터베이스마다 다른 포트를 사용하는 것이 전적으로 가능합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top