snmp-agent 初步了解

本文介绍了如何在Linux上开发SNMP子代理,包括安装snmpd,使用MIB库,生成源代码以及项目应用。重点讲解了通过mib2c工具自动生成源代码,并实现子代理扩展自定义MIB库,以实现 scalar变量的处理。
摘要由CSDN通过智能技术生成

入门级snmp agent开发,通过这篇文章可大致了解snmp agent的开发思路,主要参考了网上博客与官方文档,下方有链接。

用net-snmp扩展MIB库,实现方法可归结为四种:

1)一是静态库方式,通过修改配置头文件,在相应地方包含新引入的mib模块的.c和.h文件,然后重新编译库文件和扩展代码;这种方式不够灵活,每次修改扩展的MIB后,都需要重新编译snmpd和扩展的代码,再重新安装snmpd到系统中。

2)二是编译动态共享库,只需把新引入的MIB模块的.c和.h文件编译成动态库,通过设置能够让代理程序载入。

对于第二种方式,一需要编译成.so动态共享库,二需要原代理程序是否包含dlmod或load命令,三还要看系统是否支持。一般情况下仅支持Unix平台。

3)三是扩展一个子代理,让SNMPD以主代理的模式运行,对于SNMPD我们只要让它启动就可以,不需要任何的更改和配置,把子代理编译生成的程序运行起来就可以扩展自定义的MIB库。

4)用shell脚本来扩展

本文我们以第三种方法在linux上开发和测试

一、安装snmpd

1.1 安装包:

net-snmp-agent-libs-5.7.2-28.el7_4.1.x86_64
net-snmp-utils-5.7.2-28.el7_4.1.x86_64
net-snmp-libs-5.7.2-28.el7_4.1.x86_64
net-snmp-5.7.2-28.el7_4.1.x86_64
net-snmp-devel-5.7.2-28.el7_4.1.x86_64
net-snmp-perl-5.7.2-28.el7_4.1.x86_64

1.2 测试

systemctl restart snmpd.service
systemctl status snmpd.service
# 若出现running这表示安装成功

1.3 配置

vim /etc/snmp/snmpd.conf

master agentx  # master 是说该snmpd以主代理方式运行

rocommunity public  # rocommunity (只读对象)

rwcommunity public  # rwcommunity(读写对象)

默认主代理snmpd只支持agentx类型,而我们要开发的程序是一种子代理(subagent),是需要连snmpd的master agent的。

测试snmpd是否正常

执行snmpwalk -v2c -c public localhost 1.3.6.1.2.1.1,

输出类似如下方展示,则表示正常运行

SNMPv2-MIB::sysDescr.0 = STRING: Linux bogon 3.10.0-693.el7.x8664 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x8664

二、MIB库

首先MIB库有什么用?其实作为子代理来说,在server机器上,可以不用MIB库,MIB库只为了让用户访问时方便,有了MIB库,用户就不用记那么多和长的OID,比如把MIB放在windows机器上,在windows机器装一个支持MIB的软件,用该软件打开MIB库,只要点击相应的对象就可以自动发送snmp请求到server端,所以server端是可以不要MIB库的。

MIB 存放目录 /usr/share/snmp/mibs目录下,因为这个目录是snmpd的默认目录,只要把MIB库放入该目录就可以自动加载MIB库,否则需要修改/etc/snmp/snmp.conf文件,添加mibs +/path/to/XXX 并重启snmpd。

2.1 示例1

自定义MIB库,如下:

-- Test-MIB.my  
    Test-MIB DEFINITIONS ::= BEGIN  

        IMPORTS  
            OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP      
                FROM SNMPv2-CONF      
            enterprises, Integer32, Unsigned32, OBJECT-TYPE, MODULE-IDENTITY,   
            NOTIFICATION-TYPE      
                FROM SNMPv2-SMI      
            DisplayString      
                FROM SNMPv2-TC;  

-- October 09, 2002 at 14:50 GMT  
        -- 1.3.6.1.4.1.16535  
        Test MODULE-IDENTITY   
            LAST-UPDATED "200210091450Z"        -- October 09, 2002 at 14:50 GMT  
            ORGANIZATION   
                ""    
            CONTACT-INFO   
                ""    
            DESCRIPTION   
                "Video's Server MIB."  
            ::= { enterprises 16535 }  

--  Node definitions  
-- This part will include all details about the Test.  
        -- 1.3.6.1.4.1.16535.1  
        Time OBJECT IDENTIFIER ::= { Test 1 }   


        -- 1.3.6.1.4.1.16535.1.1  
        GetTime OBJECT-TYPE  
            SYNTAX DisplayString (SIZE (0..100))  
            MAX-ACCESS read-only  
            STATUS current  
            DESCRIPTION  
                "Example : 2013/4/11"  
            ::= { Time 1 }  
    END  

-- Test-MIB.my  

该MIB库只有一个OID,即:1.3.6.1.4.1.16535.1.1

测试:

snmptranslate -Tp -IR Test-MIB::Test
# 如出现下面结果,表示MIB正常加载
+--Test(16535)
   |
   +--Time(1)
      |
      +-- -R-- String    GetTime(1)
               Textual Convention: DisplayString
               Size: 0..100

2.1 示例2

官方提供NET-SNMP-TUTORIAL-MIB.txt

NET-SNMP-TUTORIAL-MIB DEFINITIONS ::= BEGIN

-- A Comment!

-- IMPORTS: Include definitions from other mibs here, which is always
-- the first item in a MIB file.
IMPORTS
    netSnmpExamples                   FROM NET-SNMP-EXAMPLES-MIB
    OBJECT-TYPE, Integer32,
    MODULE-IDENTITY                       FROM SNMPv2-SMI
    MODULE-COMPLIANCE, OBJECT-GROUP       FROM SNMPv2-CONF;

--
-- A brief description and update information about this mib.
--
netSnmpTutorialMIB MODULE-IDENTITY
    LAST-UPDATED "200205290000Z"            -- 29 May 2002, midnight
    ORGANIZATION "net-snmp"
    CONTACT-INFO "postal:   Wes Hardaker
                            P.O. Box 382
                            Davis CA  95617

          email:    net-snmp-coders@lists.sourc
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值