C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[68290] Re:[질문]인디의 snmp를 사용하려고 하는데
빌더(TWx) [builder] 2074 읽음    2012-10-02 01:06
하안인 님이 쓰신 글 :
: 빌더 6에서 인디의 snmp를 사용하여 네트워 장비를 컨트롤 하는 프로그램을 작성하려고 하는데요
: snmp는 agent 와 manager가 있고, 인디의 snmp를 가지고 agent , manager 둘다 가능하다고
: 하는데 어떻게 해야 하는지 간단한 샘플프로그램있으시면
: 부탁드립니다.
:
: snmp 프로토콜은 처음 접해 보는것이라 생소해서 어디부터 손을 대야 할지 몰라서
: 샘플 프로그램이라도 있으면 많은 도움이 될것 같습니다.
:
: 도움 부탁드립니다



Indy 에서 제공되는 SNMP 컴포넌트는 Request 패킷을 보내고 Agent 로 부터 응답 결과를 받는 식의...

기초적인 쿼리수준의 기능만 구현되어 있을 뿐... Agent 기능 까지 구현되어 있는 것은 아닙니다.

패킷을 디코딩해서 MSG_GET, MSG_GETNEXT, MSG_GETBULK, MSG_SET 등의 SNMP PDU

코맨드 요구에 대해서 처리가 가능하도록 Agent 부분은 따로 구현해 줘야 합니다.

SNMP를 사용하기 위해선 Indy SNMP 컴포넌트 자체 보다, SNMP 프로토콜에 대한 이해가 필요 한데요.


Indy SNMP 컴포넌트 사용법은 아주 단순 합니다.

예를 들어서...


 IdSNMP1->Query->Clear();
 IdSNMP1->Query->Host = L"127.0.0.1";
// IdSNMP1->Query->Community = L"public";  // default = public
 IdSNMP1->Query->PDUType = PDUGetRequest;
 IdSNMP1->Query->MIBOID->Add(L"1.3.6.1.2.1.1.1.0");

 if( IdSNMP1->SendQuery()) {
  for(int i=0; i < IdSNMP1->Reply->ValueCount; i++)
  {
   Memo1->Lines->Add(IdSNMP1->Reply->Value[i]);
  }
 }


위와 같은 식으로 'Qeury'를 설정해서 보내고, 'Reply'로 결과를 받으면 됩니다.


위에서는.. OID를 "1.3.6.1.2.1.1.1.0"로 보내고 있는데...

Windows 7에서 SNMP Agent Server가 설치 되어 있다면... CPU 타입, OS 버전 등의 간단한 정보가 리턴 될 것이고...

SNMP를 지원하는 라우터나 카메라 같은 장비에 쿼리를 보냈다면... 펌웨어 정보, 제조사 등 간단한 정보가 리턴 되겠죠.

SNMP 프로토콜에서 OID는 트리구조의 오브젝트 타입을 '도트 뉴머릭' 형태로 표현한 건데..

(1.3.6.1.2.1.1.1.)은 "iso.org.dod.internet.mgmt.mib-2.system.sysDescr"을 대신하는 '도트 뉴머릭'형태의 표현 입니다.

그래서 위와 같은 식으로 OID 쿼리를 보내면 'System Descriptor"를 의미하는 시스템 정보가 리턴 되는 거고요.

OID 정의는 표준으로 정해진 것이 사용되기도 하고, 벤더가 커스텀 하게 정의해서 사용할 수도 있습니다.

갖고있는 네트웍 장비에서 SNMP 프로토콜을 지원하고 있다면,  Agent 코드는 장비에서 펌웨어로 구현되어 있을 테니까,

Agent 쪽은 신경 쓸 필요가 없을 겁니다.

만약 Agent를 직접 구현해야 한다면 SNMP 프로토콜 전반에 대해 세부적으로 이해하고 있어야 합니다.

중요한 건 Indy SNMP 컴포넌트의 사용방법 숙지가 아닌, SNMP 프로토콜 자체 입니다.

OID, MIB, SNMP 프로토콜에 대한 RFC 문서라도  먼저 정독해서 읽어 보는 게 필요 할 것으로 보이네요.



...

+ -

관련 글 리스트
68285 [질문]인디의 snmp를 사용하려고 하는데 하안인 1185 2012/09/29
68290     Re:[질문]인디의 snmp를 사용하려고 하는데 빌더(TWx) 2074 2012/10/02
68294         Re:Re:[질문]인디의 snmp를 사용하려고 하는데 하안인 1351 2012/10/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.