본문 바로가기

snmp

(11)
snmp 명령들(snmpget, snmpgetnext, snmpwalk) 맥 OS X에는 기본적으로 Snmp agent로부터 값을 가져올 수 있는 명령이 설치되어 있었다.요세미티에서 보니/usr/bin/ 하위에 있었다. which 명령으로 보면 된다.$ which snmpget/usr/bin/snmpget man페이지를 봐도 되나 html로 볼 수 있는 웹사이트가 있었다. (애플 OS X Man Pages) - SNMPGET(1) : https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/snmpget.1.html - SNMPGETNEXT(1): https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPa..
SNMP - 래퍼 net-snmp 순수 C로 구현된 SNMP 라이브러리이다. 공식 웹사이트 : http://www.net-snmp.org 소스코드 수정 : 유니코드로 변경snmp_api.hsystem.hdata_list.hdefault_store.h 타입 재정의 문제types.h(81) : warning C4142: 형식이 재정의되었지만 심각하지는 않습니다.-> include/net-snmp/types.h#ifndef HAVE_SOCKLEN_Ttypedef u_int socklen_t;#endif하지만 윈속에 이미 타입 정의가 되어 있기에 충돌하는 것이다.Microsoft SDKs/Windows/v6.0A/Include/WS2tcpip.htypedef int socklen_t; 해결하는 가장 빠른 방법은 include 하는 위에 HAVE..
SNMP - 래퍼 SNMP Management SNMP Management API링크시 Mgmtapi.lib 포함 필요#pragma comment(lib, "MgmtAPI.Lib")WinSNMP API와 구별되는 API로 보임(StarUp과 CleanUp을 안해도 된다는 장점이 있음)단순히 값만 조회 할 경우에는 이 API들을 사용하는 것이 좋아보임 Utility API를 이용해야 할 필요성이 있음 SnmpMgrOpen Function - 특정 SNMP에이전트에게 통신을 하기 위해, 교신용 소켓들과 데이터 구조들을 초기화하는 함수SnmpMgrRequest Function - 특정 에이전트에게 명령을 요청하게 하는 함수request 함수에서 세 번째 인자인 SnmpVarBindList 구조체의 포인트(SnmpVarBind 배열의 포인트를 가지는)는 반..
SNMP - 래퍼 Rogério Paulo 쓸만한 WinSNMP Wrapper ClassSNMP - A C++ Wrapper for the WinSnmp libraryhttp://www.codeproject.com/KB/library/WinSNMPWrapper.aspx?display=Print 클래스 다이어그램까지 잘 만들어져 있다.실행파일, 프로젝트 파일 두 가지 형태로 배포되고 있는데, Visual Stdio 2003이 있다면 바로 컴파일해서 사용할 수 있다.주의할 점이 라이브러리는 알려진 버그와 콘솔이 뜨는 문제가 있다.알려진 버그불규칙하게 메모리 쓰기 오류문제 이 라이브러리를 사용하다 보면 불규칙적으로 메모리 충돌이 일어난다.(그런데 이상하게 Debug 모드로 컴파일하면 문제가 안 생기다가, Release 모드로 컴파일을 하면 문제가 발생..
SNMP 래퍼 클래스 회사에서 SNMP관련 프로그래밍을 할 일이 있었다.환경은 윈도우 /콘솔/서비스 프로그램과 C/C++기반 첫번째 사용한 것은 코드프로젝트에서 구한 'Rogério Paulo'의 SNMP Wrappe 클래스 이 래퍼 클래스는 확실히 잘 설계가 되었다. 하지만 사용하기가 조금 어렵고, 오래 사용을 하면 메모리 누수 문제가 있다.두번째 사용한 것은 내가 직접 WinSNMP API를 가지고 만든 것(현재) 결국 내가 직접 래퍼 클래스를 만들었다. 조회하려는 SNMP 에이전트의 주소와 OID를 넣으면 값을 가져오게 하는 방법으로 단순하게 바꾸었다. 하지만 약간 불안정한적인 면이 있어서 바꾸려고 하고 있다.세번째 지금 만들고 있는 것은 SNMP Management API를 가지고 만들고 있다.예전에 회사에서 사용했던..
SNMP 프로그래밍 기본적인 Socket 프로그래밍(UDP)을 할 줄 안다면 데이터를 전송하고 수신만 하면 간단하다.문제는 메시지를 만드는 것과 수신한 데이터를 해석해내는 것이 관건이다. SNMP 통신SNMP Message를 구성한다SNMP Agent에 UDP 161 포트에 접속해서 1번에서 만든 Message를 전송한다(데이터 송신-Snmp Request)전송한 데이터에 대한 응답을 받는다(데이터 수신-Snmp Response)데이터를 해석해서 사용한다 SNMP Message 포맷은 아래의 사이트를 참고하세요http://www.tcpipguide.com/free/t_SNMPVersion1SNMPv1MessageFormat.htm SNMP 메시지 샘플Windows Server 2003에 SNMP 서비스를 올리고(SNMP A..
SNMP - 윈도우 :: 프린터 추가시 윈도우에서 네트워크 프린터를 표준 TCP/IP 포트를 이용하여 추가를 할 때 SNMP 교신을 한다.정확하게는 표준 TCP/IP 포트를 생성할 때 ICMP 패킷을 보내 응답을 하는지를 체크를 하고 따라서 프린트 제조사는 이 부분을 고려해야 할 것이다.
SNMP - 프린터 Printer-MIBRFC 목록 - SNMP Printer-MIB - 1.3.6.1.2.1.43LEXMARK-PVT-MIB - 1.3.6.1.4.1.641SNMP-VIEW-BASED-ACM-MIB - 1.3.6.1.6.3.16 RFC 1759- - Printer MIB : pdf - rfc1759.txt.pdfRFC문서에는 object 이름으로 표시가 되어있어 실제 OID를 구하기가 힘들다.이럴때는 CISCO의 SNMP Object Navigator를 이용해보면 쉽게 찾을 수 있다.1. 항목 찾기 => RFC 1759이용 : Object의 이름(예. hrDeviceStatus)으로 나와있다.OID 찾기 => Object의 이름-> OIDOID 리스트 : HOST-RESOURCES-MIB.oidUniver..