2014-12-27 181 views
0

Hy! 我尝试编写我自己的net-snmp MIB模块,但我遇到了一些问题...... :) 我在www.net-snmp.org网站上阅读了文档。 我做过的步骤:Net-snmp写MIB模块

  • 我试着编译NET-SNMP-EXAMPLES-MIB所以。

1)mib2c -c mib2c.scalar.conf netSnmpExampleScalars - 现在,我得到一个.c和.h文件,我复制到../agent/mibgroup目录

2)我写了一个配置脚本:

./configure \ 
    --with-ldflags="" \ 
    --with-cflags="-I/usr/src/net-snmp-5.4.4/agent/mibgroup" \ 
    --enable-mini-agent \ 
    --with-logfile="/var/log/snmpd.log" \ 
    --with-default-snmp-version=2 \ 
    [email protected] \ 
    --with-sys-location=HU/Sze \ 
    --disable-applications \ 
    --disable-debugging \ 
    --disable-manuals \ 
    --with-mib-modules="netSnmpExampleScalars" \ 
    --disable-scripts \ 
    --without-perl-modules \ 
    --disable-embedded-perl \ 
    --without-python-modules \ 
    --without-libwrap \ 
    --without-openssl \ 
    --without-rpm \ 
    --without-zlib 

3)运行./myconfig

SNMP Versions Supported: 1 2c 3 
    Building for:    linux 
    Net-SNMP Version:   5.7.3 
    Network transport support: Callback Unix Alias TCP UDP IPv4Base SocketBase TCPBase UDPIPv4Base UDPBase 
    SNMPv3 Security Modules:  usm 
    Agent MIB code:   default_modules netSnmpExampleScalars => snmpv3mibs mibII/snmp_mib mibII/system_mib mibII/sysORTable mibII/vacm_vars mibII/vacm_conf 
    MYSQL Trap Logging:   unavailable 
    Embedded Perl support:  disabled 
    SNMP Perl modules:   disabled 
    SNMP Python modules:  disabled 
    Crypto support from: 
    Authentication support:  MD5 
    Encryption support: 
    Local DNSSEC validation: disabled 

4)运行make命令

netSnmpExampleScalars.c: In function 'handle_netSnmpExampleInteger': 
netSnmpExampleScalars.c:55:90: error: expected expression before ',' token 
netSnmpExampleScalars.c:75:58: error: expected expression before ')' token 
netSnmpExampleScalars.c:88:34: error: expected expression before ')' token 
netSnmpExampleScalars.c:95:34: error: expected expression before ')' token 
netSnmpExampleScalars.c:103:34: error: expected expression before ')' token 
netSnmpExampleScalars.c: In function 'handle_netSnmpExampleSleeper': 
netSnmpExampleScalars.c:134:90: error: expected expression before ',' token 
netSnmpExampleScalars.c:154:58: error: expected expression before ')' token 
netSnmpExampleScalars.c:167:34: error: expected expression before ')' token 
netSnmpExampleScalars.c:174:34: error: expected expression before ')' token 
netSnmpExampleScalars.c:182:34: error: expected expression before ')' token 
netSnmpExampleScalars.c: In function 'handle_netSnmpExampleString': 
netSnmpExampleScalars.c:213:90: error: expected expression before ',' token 
netSnmpExampleScalars.c:233:58: error: expected expression before ')' token 
netSnmpExampleScalars.c:246:34: error: expected expression before ')' token 
netSnmpExampleScalars.c:253:34: error: expected expression before ')' token 
netSnmpExampleScalars.c:261:34: error: expected expression before ')' token 
make[2]: *** [netSnmpExampleScalars.lo] Error 1 
make[2]: Leaving directory `/usr/src/net-snmp-5.7.3/agent/mibgroup' 
make[1]: *** [subdirs] Error 1 
make[1]: Leaving directory `/usr/src/net-snmp-5.7.3/agent 
make: *** [subdirs] Error 1 

还是需要编辑mib2c生成的c文件=或者我需要用其他的.conf文件? 另外我不知道我的配置脚本是正确还是不正确。我该怎么办离开​​目录错误?

+0

看起来像生成的c文件中的语法错误。编译器不会说谎... =)很难告诉这里发生了什么,而没有看到MIB文件或生成的.c和.h文件。 – Jolta 2015-01-02 10:47:24

回答

0

我想你还没有编辑mib2c生成的.c文件。 mib2c用C代码转换你的mib,但你必须编辑代码以返回值MIB数据(或者在处理SET时接受​​它)。例如。你的mib是关于健康监测(心跳,...)。 mib2c将生成C代码的所有内容,除了要返回的内容(考虑snmp get request)。当然,mib2c不知道应该返回什么。你将如何读心跳?您将从设备或文本文件或其他内容中读取此信息?所以你需要在.c代码中填写这个,因为mib2c让它变成空白而不会编译。