2014-12-27 180 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讓它變成空白而不會編譯。