[net-snmp 질문 #5] 안녕하세요.. net-snmp 간단한 소스인데 mib

facered79의 이미지

먼저 제 글을 읽어주셔서 감사합니다.!

전 redhat 8.0 에서 net-snmp-5.2.1 을 가지고

작업중에 있습니다. 지금은 간단한 소스를 이용해 밉정보를 가져

오는 튜토리얼을 하고 있는데요.. mib의 위치를 알지 못하는 이유

로 mib 정보를 가져 오지 못하는것 같습니다..

아래 제 snmpd.conf 내용과 소스 내용, 에러 메시지 를 올리도록

하겠습니다.

음.. 이유를 모르겠네요 .. 왜 안되는건지..

글이 길어 조금 불편하시겠지만 .. 그래도 조은 조언 주셨으면

감사하겠습니다.. 그럼.

<snmpd.conf 설정>

com2sec local       localhost          public
com2sec mynetwork   IP.IP.IP.IP/*             public

group MyRWGroup v1         local
group MyRWGroup v2c        local
group MyRWGroup usm        local
group MyROGroup v1         mynetwork
group MyROGroup v2c        mynetwork
group MyROGroup usm        mynetwork

view all    included  .1                               80

access MyROGroup ""      any       noauth    exact  all    none   none
access MyRWGroup ""      any       noauth    exact  all    all    none

syslocation facered@summitec.co.kr
syscontact TBI

< 소스 내용 > 

int main(int argc, char ** argv)
{
  struct snmp_session session;
  struct snmp_session *sess_handle;

  struct snmp_pdu *pdu;
  struct snmp_pdu *response;

  struct variable_list *vars;

  oid id_oid[MAX_OID_LEN];
  oid serial_oid[MAX_OID_LEN];

  size_t id_len = MAX_OID_LEN;
  size_t serial_len = MAX_OID_LEN;

  int status;

  struct tree * mib_tree;

  /*********************/

  if(argv[1] == NULL){
        printf("Please supply a hostname\n");
        exit(1);
  }

  init_snmp("APC Check");

  snmp_sess_init( &session );
   session.version = SNMP_VERSION_1;
   session.community = "public";
   session.community_len = strlen(session.community);
   session.peername = argv[1];
  sess_handle = snmp_open(&session);

  add_mibdir("/usr/local/share/snmp/mibs/");
  mib_tree = read_mib("RFC1213-MIB.txt");

  pdu = snmp_pdu_create(SNMP_MSG_GET);

  read_objid("RFC1213-MIB::sysUpTime.0", id_oid, &id_len);
  snmp_add_null_var(pdu, id_oid, id_len);

  status = snmp_synch_response(sess_handle, pdu, &response);

...

< 에러 내용 >

root@localhost Snmpproject]# ./net-snmp1 localhost

RFC1213-MIB.txt: No such file or directory
Cannot find module (SNMPv2-SMI): At line 0 in (none)
Segmentation fault (core dumped)

[root@localhost Snmpproject]#

sangheons의 이미지

에러메시지로 보아 /usr/local/share/snmp/mibs/RFC1213-MIB.txt
파일을 읽는 과정에서 문제가 생긴것으로 보입니다만.

우선 해당 디렉토리에 RFC1213-MIB.txt 파일에 있는지 확인하시고,
그 파일이 net-snmp에서 사용하는 MIB 정의 포맷이 맞는지 살펴보시기
바랍니다.
제품마다 다르기는 합니다만, 경우에 따라서는 지정된 형태로 변환된 MIB 정의
파일을 사용해야만 하는 경우도 있습니다. net-snmp는 사용해보지 않아서
정확히 어떤 포맷의 MIB 정의 파일을 사용하는지 모르겠군요.

파일에서 RFC1213-MIB의 sysUpTime OID 값을 제대로 읽어왔다면
id_oid의 값은 1.3.6.1.2.1.1.3.0 이 되어야합니다. read_objid() 직후에
값을 찍어서 확인해보시면 되겠네요.

익명 사용자의 이미지

말씀해주신데로 oid 값을 찍기 위해

printf("%d \n",id_oid);

라고 추가를 했는데요.. 아무래도 자료형으로 저걸 쓰면 안되는것 같습니다.

oid를 출력하기 위한 자료형으로는 어떤것이 있나요..

익명 사용자의 이미지

배열로 풀어서 봤더니 제가 요구하는

oid가 얻어지는 것을 확인 했습니다..

하지만.. 그 아래 부분에서

다시 에러가 발생하네요..

timeout 에러는 아니고..

snmp_error 상수 1을 반환하면서 종료 되는데..

이거는 왜 그런 건가요..

sangheons의 이미지

어느 부분에서 에러가 발생하는지부터를 정확히 확인해야하지 않을까요?

Get-Request 메시지를 보내는 과정에서 에러가 나는지, Get Response
메시지를 읽는 과정에서 에러가 나는지...

SNMP를 UDP를 사용하기 때문에 OID 값만 정확하다면 메시지 전송과정에서
에러가 발생할 가능성은 크지 않을겁니다만, 그래도 확인은 해봐야겠죠.

일단 어디에서 error가 리턴되는지를 파악해야 조치가 가능할것 같습니다.

facered79의 이미지

확인해본 결과

정확한 위치는

snmp_synch_response 함수에서

에러가 리턴되고 프로그램이 종료되는 것을 확인 할 수 있었습니다..

지금 저 함수 몸체를 좀 고쳐서 왜 그러는지 확인중에 있습니다..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.