如何写扩张mib

0.环境:
OS:opensolaris 2009.06版
gcc:3.4.3 (csl-sol210-3_4-20050802)
snmp:NET-SNMP version:  5.0.9

1.环境准备
    确认snmp和gcc的相关包是否已经安装:
    pkginfo SUNWsmaS
    pkginfo SUNWsmdoc
    pkginfo SUNWsmcmd
    pkginfo SUNWsmmgr
    pkginfo SUNWsmagt
    pkginfo SUNWgcc

    如果没有的话,请先安装:
    pfexec pkg install SUNWsmaS
    pfexec pkg install SUNWsmdoc
    pfexec pkg install SUNWsmcmd
    pfexec pkg install SUNWsmmgr
    pfexec pkg install SUNWsmagt
    pfexec pkg install SUNWgcc
    (注释:如果是以root登录的话,命令前面不需要pfexec)

    安装完成后的确认:
        检查sma的配置文件:
        cat /var/svc/manifest/application/management/sma.xml
        cat /etc/sma/snmp/snmpd.conf
        确认gcc安装成功:
        gcc -v
    
    启动并确认sma:
    svcadm enable svc:/application/management/sma:default     
    svcs -a sma

    查看sma的log:
    cat /var/log/snmpd.log

2.编写mib并将它导入的snmpd中
    下载net-snmp的source,它会在编译自己写的c文件时用到,下载地址是:
    http://sourceforge.net/projects/net-snmp/files/

    编写自己的mib,这一步很复杂,如果需要的话,我会单独写一片文章;具体可参见:
    http://msdn.microsoft.com/en-us/library/aa909833.aspx
    http://www.net-snmp.org/wiki/index.php/Writing_your_own_MIBs

    mib写好后,可以通过snmptranslate来测试自己的mib是否写的正确:
    首先将自己的mib文件copy到/etc/sma/snmp/mibs;
    设置环境变量:export MIBS=+YOUR-MIB-FILE-NAME
    重启sma服务:svcadm restart svc:/application/management/sma:default
    使用snmptranslate来测试自己的mib是否正常加载:snmptranslate -IR yourMIBObject
    (具体的可参见:
    http://www.net-snmp.org/FAQ.html#How_do_I_add_a_MIB_
    http://www.net-snmp.org/wiki/index.php/TUT:snmptranslate )

    编写mib对应的c文件:
    使用mib2c可以生产对应的c文件和头文件:pfexec mib2c -c /etc/sma/snmp/mib2c.scalar.conf yourFileName
    (注释:mib2c只是生产一个框架,具体的实现自己要完成;/etc/sma/snmp/mib2c.scalar.conf是用来生成c文件的配置文件,
    在/etc/sma/snmp目录下还有很多不同的配置文件,具体的区别可参见:
    http://docs.sun.com/app/docs/doc/817-3155/writingmodule-19?a=view)

    编译source:
    首先配置刚才下载的net-snmp的source,转到你解压的目录并执行:
    ./configure --with-mib-modules="ucd_snmp $OTHER_MIBS" $OTHER_OPTIONS
    编译mib2c生产并且自己实现的c文件:
    cc -m64 -I yoursnmproot/net-snmp-svn-main/include `net-snmp-config --cflags` -fPIC -shared -g -O0 -o yourSoName.so yourFileName.c `net-snmp-config --libs`
    (注释:-m64 表示生产的目标文件是64位的)

    加载so文件:
    修改snmpd.conf文件(给文件追加一行),使自己的动态链接库在snmpd重启时可以加载:
    dlmod yourMIBObject yourdemopath/yourSoName.so
    重启sma并查看log:
    svcadm restart svc:/application/management/sma:default
    cat /var/log/snmpd.log
    (如果log中只有snmp的版本号,表示一切顺利)

    使用snmpget,snmpset等命令测试自己的so文件是否正常工作
    (参见:http://www.net-snmp.org/wiki/index.php/TUT:Writing_a_Dynamically_Loadable_Object)    

    注意,参见我写的另一篇文章:
    http://blog.csdn.net/lantianjialiang/archive/2010/04/27/5532789.aspx

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值