免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1315 | 回复: 0
打印 上一主题 下一主题

Installing and using Net-SNMP On Linux [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-13 18:37 |只看该作者 |倒序浏览

On Redhat 7.1 or above, NetSnmp has become the default snmp...
But on other linux version. It is still a good guide.
http://www.rpmfind.net
is a good site for finding rpm package for linux.
In this tutorial we will
  • download and install net-snmp,
  • write and install a simple MIB,
  • write a subagent to handle to mib.
Download and install net-snmp package
This package was previously known as ucd-snmp
  • Download the source from
    here
    , or if this link is broken try the
    net-snmp homepage
    , to your local directory which we will now refer to as ${HOME}. For this tutorial we will use net-snmp-5.0-pre2.
  • change directory to ${HOME}, untar and unzip the package using: $gunzip net-snmp-5.0.pre2.tar.gz
    $tar xvf net-snmp-5.0.pre2.tarThis will dump all the souce into ${HOME}/net-snmp-5.0.pre2
  • To compile to package: $./configure --with-mib-modules="agentx"
    $make
    $make install
    $cd local; make install; cd ..
    $cd mibs; make install; cd ..The "configure" command configure the agent to use the AgentX protocol. This is a IETF defined protocol that allows a master/client relationship between agents and subagents. The last two command should not theoretically have to be to used ... but without them .. things do not seem to work. Now, we have to setup the snmpd configuration file, before "snmpd" can work properly.
  • Copy the example configuration file: $ cp ${HOME}/EXAMPLE.conf /usr/local/share/snmp/snmpd.conf
  • Now we need to modify /usr/local/share/snmp/snmpd.conf as follows:
  • Replace COMMUNITY with "democommunity". This is your community string.
  • Comment out 2nd "com2sec" line. We do not allow network access for now.
  • On a new line at the end of the file add "master agentx". This tells the agents to behave as the master in the master/client AgentX protocol.
  • We now need to fix some library links (this is truely awful ... is this a Redhat or a net-snmp "problem"/"feature" ?)(Note: On some machines this is not required e.g RedHat 7.1 ... use your judgement :-)) $ln -s /usr/local/lib/libnetsnmp-0.5.0.0.2.so /lib/libnetsnmp-0.5.0.0.2.so
    $ln -s /usr/local/lib/libnetsnmpagent-0.5.0.0.2.so /lib/libnetsnmpagent-0.5.0.0.2.so
    $ln -s /usr/local/lib/libnetsnmphelpers-0.5.0.0.2.so /lib/libnetsnmphelpers-0.5.0.0.2.so
    $ln -s /usr/local/lib/libnetsnmpmibs-0.5.0.0.2.so /lib/libnetsnmpmibs-0.5.0.0.2.so
  • To check "snmpd" do:
    become root $ ps awwux | grep snmpif you see an earlier snmpd deamon ... kill it $ cd ${HOME}/net-snmp-5.0.pre2/agent
    $ ./snmpd -f -LThis should start the "snmpd" agent but keep it attached to the current terminal (which is useful since we want to kill it very soon).
  • On another window: $snmpget -v 1 -c democommunity localhost system.sysUpTime.0If snmpd was installed correctly, this gives up the timeticks the snmpd agent has been up (NOT how long your system was up !!). If you get an error .. retrace your steps from the beginning.
    You can now use "^C" to kill the snmpd deamon in the first window.
    Writing and installing a MIBIn this part of the the tutorial we will write and install a simple MIB.
  • First write the mib that you want to implement. For our tutorial we write a simple MIB called
    JM-TEST-1-MIB.txt
    : JM-TEST-1-MIB DEFINITIONS ::= BEGIN
    IMPORTS
            MODULE-IDENTITY,
            OBJECT-TYPE,
            INTEGER
                    FROM SNMPv2-SMI;
    jmtest MODULE-IDENTITY
        LAST-UPDATED "200203210000Z"
        ORGANIZATION "Temple U"
        CONTACT-INFO
            "None yet."
        DESCRIPTION
            "AgentX testing MIB"
        REVISION     "200203210000Z"
        DESCRIPTION
            "None yet."
        ::= { experimental 72}
    firstKey OBJECT-TYPE
        SYNTAX      INTEGER (0..100)
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "Value initialized to 0 and on each
             access:
             - Return current val.
             - increment"
        ::= { jmtest 1 }
    END
    This mib represents a resource "firstKey" whose initial value is 0 and whose value gets incremented every time it is queried.
    Note that this MIB will be registered under the 1.3.6.1.3.72 heirarchy. This choice is arbitrary and should only be used for experiments. For real world implementation you should get a "real" OID. Existing OIDs and guidelines on getting new ones can be fo und
    here
    . This page is maintained by the current (March 2002) IETF/IESG chair, so he probably knows what he is talking about.
    Copy this mib into the mibs directory
    $cp JM-TEST-1-MIB.txt /usr/local/share/snmp/mibs
  • Now we need to get the SNMP tools to recognise this MIB. So: $echo "mibs +JM-TEST-1-MIB" >> /usr/local/share/snmp/snmp.confThis adds a directive to the snmp tools configuration asking them load our mib.
  • To verify if our MIB is loaded use the verstile snmptranslate command: $snmptranslate -IR -Tp experimentalThis command will draw the present tree under the experimental branch. Omit the last parameter and you will get the whole tree (as currenly understood by the snmp tools). The output should look like: Unlinked OID in JM-TEST-1-MIB: jmtest ::= { experimental 72 }
    +--experimental(3)
       |
       +--jmtest(72)
          +-- -RW- INTEGER   firstKey(1)
                   Range: 0..100If you get the above output, then we are in good shape so far. The real work, howeve still remains. We must now write the subagent that will handle queries on under this OID branch. Writing and installing a subagentIn this section we will write and install a subagent that serves the mib we installed in the previous section.
    The subagent is an independent program that communicates with the master agent (snmpd in our case) using the AgentX protocol.
    The basic steps of writing the code is as follows:
  • Write the agent code in a C file, say example.c. This can be done using the mib2c tool.
  • Create the subagent executable using the net-snmp-config tool. mib2c is (supposed to) take in the MIB definition as spit out the subagent code. However (as far as I could figure out) the mib2c program distributed with this version of net-snmp does not generate code for simple scalar mibs, instead dealing with mibs th at have tables.
    So for an example of subagent code for simple scalar objects look at ${HOME}/agent/mibgroups/example/example.c.
    We have adapted example.c for our mib (JM-TEST-1-MIB.txt) as
    example2.c
    .
    Download
    example2.c
    and
    example1.h
    $mkdir ${HOME}/agent/mibgroup/examples/subagent
    $cp example2.c ${HOME}/agent/mibgroup/examples/subagent
    $cp example.h ${HOME}/agent/mibgroup/examples/subagentNow we create the executable using the net-snmp-config tools as: $net-snmp-config --compile-subagent example2 example2.c -I../../../mibgroupThis produces a executable called example2. example2 is our subagent. Voila !
    To test whether things are still working.
    In first window:
    $cd ${HOME}/agent
    $./snmpd -f -L -DThis will start the snmpd deamon in the debugging mode (you will see LOTS of messages).
    In the second window:
    $cd agent/mibgroup/examples/subagent
    $./example2Finally in the third window, the command and output should look like (output is shown in bold): [root@x mibs]# snmpget -v 1 -c democommunity localhost firstKey.0
    Unlinked OID in JM-TEST-1-MIB: jmtest ::= { experimental 72 }
    JM-TEST-1-MIB::firstKey.0 = 1

    [root@x mibs]# snmpget -v 1 -c democommunity localhost 1.3.6.1.3.72.1.0
    Unlinked OID in JM-TEST-1-MIB: jmtest ::= { experimental 72 }
    JM-TEST-1-MIB::firstKey.0 = 2

    [root@x mibs]# snmpset -v 1 -c democommunity localhost 1.3.6.1.3.72.1.0 i 10
    Unlinked OID in JM-TEST-1-MIB: jmtest ::= { experimental 72 }
    JM-TEST-1-MIB::firstKey.0 = 10

    [root@x mibs]# snmpget -v 1 -c democommunity localhost firstKey.0
    Unlinked OID in JM-TEST-1-MIB: jmtest ::= { experimental 72 }
    JM-TEST-1-MIB::firstKey.0 = 10

    [root@x mibs]# snmpget -v 1 -c democommunity localhost 1.3.6.1.3.72.1.0
    Unlinked OID in JM-TEST-1-MIB: jmtest ::= { experimental 72 }
    JM-TEST-1-MIB::firstKey.0 = 11

    [root@x mibs]# snmpget -v 1 -c democommunity localhost 1.3.6.1.3.72.1.0
    Unlinked OID in JM-TEST-1-MIB: jmtest ::= { experimental 72 }
    JM-TEST-1-MIB::firstKey.0 = 12

    [root@x mibs]# snmpwalk -v 1 -c democommunity localhost firstKey        
    Unlinked OID in JM-TEST-1-MIB: jmtest ::= { experimental 72 }
    JM-TEST-1-MIB::firstKey.0 = 13
    In the output above notice that every snmpget query returns an increasing value of "firstKey" and snmpset lets us set "firstKey" to an arbitrary value (within a defined range).
    We now have a working subagent. In real applications the subagent could be embedded in the application to be managed.
    --by
    Jaiwant Mulik
    , March 2002.
    [/url]


    本文来自ChinaUnix博客,如果查看原文请点:[url]http://blog.chinaunix.net/u/9924/showart_47432.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP