自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

通過ucd-snmp完成SNMP Agent的源碼

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
在學(xué)習(xí)SNMP中,我們知道它的代理形式是非常重要的。所以我們今天就著重講解一下用ucd-snmp來完成SNMP Agent的過程。

對于snmp少不了ucd-snmp的使用。所以我們一再介紹了相關(guān)的源碼的內(nèi)容。那么接下來我們主要介紹了一下相關(guān)協(xié)議的開源開發(fā)內(nèi)容,并且討論采用開放源碼的ucd-snmp 4.2.1軟件包開發(fā)自己的SNMP Agent,不涉及SNMP協(xié)議包的組包、解析等問題。本文從以下部分進(jìn)行介紹:

一:ucd-snmp 4.2.1簡介及SNMP Agent開發(fā)步驟

二:MIB庫模塊設(shè)計及代碼轉(zhuǎn)換

三:SNMP Agent功能擴(kuò)展方式

四:uCLinux系統(tǒng)上SNMP Agent的實(shí)現(xiàn)

五:創(chuàng)建SNMP Agent配置文件snmpd.conf

一:ucd-snmp 4.2.1簡介及SNMP Agent開發(fā)步驟

ucd-snmp 4.2.1開源軟件包支持SNMPv1 (RFCs 1155-1157)、SNMPv2c(RFCs 1901-1908)、SNMPv3 (RFCs 2271-2275)三種SNMP協(xié)議版本,其由以下內(nèi)容組成:

可擴(kuò)展的SNMP Agent程序(snmpd);

SNMP Agent和管理程序開發(fā)庫;

用于檢索或設(shè)置SNMP Agent端變量的工具程序(snmpget, snmpset, snmptable, snmpwalk等);

用于生成或處理SNMP陷阱的工具程序(snmptrapd和snmptrap);

基于Tk/perl的MIB瀏覽器(tkmib)

SNMP Agent的開發(fā)一般采用以下步驟:

MIB庫模塊設(shè)計。

MIB庫模塊轉(zhuǎn)換為C語言代碼。

轉(zhuǎn)換后的C語言代碼添加到ucd-snmp源碼包,實(shí)現(xiàn)SNMP Agent的功能擴(kuò)展。#p#

二:MIB庫模塊設(shè)計及代碼轉(zhuǎn)換

在SNMPAgent開發(fā)中,首先要定義出MIB庫模塊,這樣,SNMP管理端軟件才能通過該MIB庫模塊實(shí)現(xiàn)對相應(yīng)設(shè)備的管理。MIB庫模塊定義的語法,可以參照SNMP 協(xié)議中的SMI描述部分,本文使用MG-SOFT公司的“Visual MIBBuilder"可視化設(shè)計軟件完成MIB庫模塊的定義。MIB庫模塊定義后,需要在代理程序中增加與所定義的MIB庫模塊相對應(yīng)的源代碼,這里就要使用MIB2C工具程序把MIB庫模塊文件轉(zhuǎn)換成C源代碼。

MIB2C是ucd-snmp 4.2.1軟件包中的工具程序,該工具程序需要SNMPperl擴(kuò)展模塊支持。按以下步驟進(jìn)行轉(zhuǎn)換,首先將設(shè)計好的MIB庫模塊定義文件拷貝到ucd-snmp源代碼的mibs目錄(如/usr/local/share/snmp/mibs),然后運(yùn)行MIB2C命令(假定MIB庫模塊為modulename)。

/usr/local/bin/mib2c modulename

此時,MIB2C會在當(dāng)前目錄下生成兩個C源文件:modulename.h 和modulename.c,這兩個文件是根據(jù)所設(shè)計的MIB庫模塊轉(zhuǎn)換而成的,也是需要加入到ucd-snmp軟件包實(shí)現(xiàn)SNMP Agent功能擴(kuò)展的源代碼。

#p#三:SNMP Agent功能擴(kuò)展方式

SNMP Agent功能擴(kuò)展即snmpd功能擴(kuò)展,假定ucd-snmp源代碼存放在/usr/local/src/目錄下,下面是實(shí)現(xiàn)snmpd功能擴(kuò)展的兩種方式:

靜態(tài)鏈接方式

先將生成的兩個文件, modulename.h和modulename.c,拷貝到ucd-snmp源代碼的/usr/local/src/ucd-snmp-4.2.1/agent/mibgroup目錄,然后,在ucd-snmp 4.2.1目錄下(/usr/local/src/ucd-snmp-4.2.1)執(zhí)行以下命令生成snmpd。

# ./configure -with-mib-modules="modulename"
# make
# make install 

共享鏈接庫方式

首先, 在任一目錄(如/usr/local/temp)編譯生成共享鏈接庫。將兩個源文件, modulename.h和modulename.c拷貝到此目錄下,執(zhí)行如下命令生成共享鏈接庫:

gcc -g -I/usr/local/include -c -o modulename.o modulename.c 
gcc -g -fPIC -shared -o modulename.so modulename.o 

然后,通過以下任意一種方式動態(tài)加載共享鏈接庫。

如果代理程序(snmpd)已運(yùn)行,執(zhí)行如下命令:

#snmpset localhost rwnode UCD-DLMOD-MIB::dlmodStatus.1 i create
#snmpset localhost rwnode UCD-DLMOD-MIB::dlmodName.1 s " modulename"
#snmpset localhost rwnode UCD-DLMOD-MIB::dlmodPath.1 s "/usr/local/temp/ modulename.so"
#snmpset localhost rwnode UCD-DLMOD-MIB::dlmodStatus.1 i load 

這樣即可加載剛才生成的共享連接庫,裝載后,可以用工具程序檢索或設(shè)置相應(yīng)的變量。如果代理程序(snmpd)未運(yùn)行,在snmpd.conf配置文件中增加一行:

dlmod modulename /usr/local/temp/modulename.so 

然后重新啟動snmpd代理程序, 程序會自動裝載共享庫。

#p#四:uCLinux系統(tǒng)上SNMP Agent的實(shí)現(xiàn)

考慮到嵌入式設(shè)備應(yīng)用程序自動啟動的特點(diǎn),一般采用靜態(tài)鏈接方式開發(fā)SNMP Agent。由于uCLinux交叉編譯環(huán)境的特殊性,在uCLinux系統(tǒng)上實(shí)現(xiàn)SNMP Agent需要按以下步驟。

增加新文件及修改Makefile文件:復(fù)制modulename.c和modulename.h到agent/mibgroup/目錄下。

修改agent/Makefile文件: 
  增加"mibgroup/modulename.lo"到LMIBOBJS符號下。 
  增加"mibgroup/modulename.o"到MIBOBJS符號下。

修改agent/mibgroup/Makefile文件: 
  增加"modulename.o"到OBJS符號下。 
  增加"modulename.lo"到LOBJS符號下。 
  增加"modulename.c"到SRCS符號下。

修改agent/mibgroup/mib_module_includes.h文件: 
  增加 #include "mibgroup/modulename.h"一行。

修改agent/mibgroup/mib_module_inits.h文件: 
  增加“if (should_init("modulename")) init_ modulename ();"一行。 

#p#重新配置內(nèi)核

要生成SNMP Agent程序snmpd,需要重新配置應(yīng)用程序。切換到uClinux-dist目錄,開始重新配置應(yīng)用程序:

cd ../uClinux-dist 
make menuconfig 

進(jìn)行如下選擇:

Kernel/Library/Defaults Selection: 
(Linux-2.4.x) Kernel Version 
[X] Customize Vendor/User Settings (NEW) 

按Esc后保存。隨后自動進(jìn)入 uClinux v3.1.0 Configurationm,選中“Network Application---->"并進(jìn)入下一級選項菜單,在這里可以配置arp、ifconfig、ping、route和snmpd等應(yīng)用程序,選中ucd-snmpsnmpd一項。

[X] ucd-snmp snmpd 

保存后退出,然后在終端提示符下執(zhí)行命令“make user_only"生成SNMP Agent程序snmpd。#p#

五:創(chuàng)建SNMP Agent配置文件snmpd.conf

snmpd啟動時需要讀取snmpd.conf配置文件,通過該配置文件,可以控制SNMP管理端對變量的讀寫屬性,下面是該配置文件的一個示例:

syslocation Shanghai
syscontact localhost 
sysservices 72
com2sec public default public
com2sec private default private
group public v1 public
group private v1 private
group public v2c public
group private v2c private
group public usm public
group private usm private
view all included .1 80
view system included .1.3.6.1.2.1.1 fe
access public "" any noauth exact all none all
access private "" any noauth exact none all all
trapsink 200.162.162.27

 

責(zé)任編輯:佟健 來源: 比特網(wǎng)
相關(guān)推薦

2010-07-01 12:38:31

ucd-snmp

2010-07-01 13:58:50

UCD-SNMP

2010-07-01 14:53:09

SNMPMIBUCD-SNMP

2010-07-02 10:18:23

ucd-snmpMIB

2010-07-05 09:37:19

ucd-snmpsnmpd擴(kuò)展

2010-07-09 14:26:10

SNMP Agent

2010-01-08 14:29:58

華為交換機(jī)snmp

2010-07-02 10:39:20

AdventNet S

2011-03-23 12:49:53

NagiosSNMP流量

2010-05-24 18:19:44

SNMP報文

2011-11-08 21:24:30

SNMP

2010-06-29 16:53:08

2010-07-05 16:42:39

AdventNet S

2010-06-30 10:31:34

SNMP MIB

2011-03-31 13:40:36

SNMPMRTG安裝

2010-06-29 14:17:22

SNMP協(xié)議

2010-07-05 11:35:58

IPX協(xié)議SNMP

2010-06-29 14:48:44

SNMP Trap

2010-06-29 16:41:32

關(guān)閉SNMP服務(wù)

2010-07-12 17:23:14

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號