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

ucd-snmp工具中snmpd擴展的三種形式

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
下面我們對ucd-snmp工具中的snmpd擴展的相關(guān)內(nèi)容進行了詳盡的介紹。首先我們介紹了三種方法:靜態(tài)鏈接、共享鏈接庫和 AgentX子代理。

SNMP協(xié)議對網(wǎng)絡(luò)管理的好處,讓很多人都開始使用它。那么現(xiàn)在我們就來講解一下ucd-snmp工具中進行snmpd擴展的相關(guān)源碼解析。本文涉及了三種snmpd擴展方法。那么我們會分別進行講解。首先還是讓我們來對snmpd這個命令進行一下簡單的介紹。那么,對于常常接觸這個命令的人來說,都知道snmpd命令是響應(yīng) SNMP請求的守護進程。那么它的標(biāo)準(zhǔn)語法格式是:

snmpd [OPTIONS] [LISTENING ADDRESSES]

語法格式是snmpd后面加上選項或者監(jiān)聽地址。

snmpd擴展方法一: 靜態(tài)鏈接形式

先將生成的兩個文件, ustScalarSet.h和ustScalarSet.c, 拷貝到下載的ucd-snmp源代碼目錄下agent/mibgroup子目錄中. 例如在我的機器上, ucd-snmp 4.2.1的源代碼在/usr/local/src/ucd-snmp-4.2.1中, 相應(yīng)的拷貝的目標(biāo)目錄為, /usr/local/src/ucd-snmp-4.2.1/agent/mibgroup.

在ucd-snmp 4.2.1的主目錄中(我的機器為/usr/local/src/ucd-snmp-4.2.1), 按如下序列執(zhí)行命令

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

這樣, 新的代理程序生成并安裝. 運行SNMP代理程序

# /usr/local/sbin/snmpd

在用相應(yīng)的工具程序檢索新加入的MIB變量. 可以用如下任何命令:

% /usr/local/bin/snmpget localhost public UCD-SNMP-TUTORIAL-MIB::ustSSSimpleString.0
% /usr/local/bin/snmpwalk localhost public UCD-SNMP-TUTORIAL-MIB::ustScalarSet

#p#snmpd擴展方法二: 共享鏈接庫形式

首先, 在任一目錄下編譯生成共享鏈接庫. 假定目錄為/usr/local/temp. 將兩個源文件, ustScalarSet.h和ustScalarSet.c拷貝到此目錄下. 按如下命令序列生成共享鏈接庫:

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

有兩種方法在代理程序中動態(tài)加載共享鏈接庫.

第一種,適合于代理程序已運行的情況, 按如下命令序列執(zhí)行:

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

即可裝載.這時可以用工具程序檢索或設(shè)置相應(yīng)的變量. 這里需要注意的是工具snmpset的用法. 代理snmpd的確省配置, 不支持任何用戶設(shè)置變量. 我們可以通過配置文件snmpd.conf中的訪問控制部分進行配置. 我在我的snmpd.conf文件中加入了如下兩行:

rwcommunity hyj
rocommunity public

設(shè)置了一個讀寫community, hyj和一個只讀community, public. 配置文件確省位于/usr/local/share/snmp目錄下.

第二種, 直接在snmpd.conf中加入一行:

dlmod ustScalarSet /usr/local/temp/ustScalarSet.so

重新啟動snmpd代理, 代理自動裝載共享庫.

關(guān)于代理程序以及工具程序相應(yīng)的配置情況, 參見snmp.conf, snmpd.conf, 和snmpconf的man手冊.#p#

snmpd擴展方法三: AgentX子代理協(xié)議

首先, 編寫一個子代理主函數(shù)文件, ustMain.c. 如下:

1) #include ;
2) #include ;
3) #include ;
4) int main () {
5) int agentx_subagent=1; 
6) snmp_enable_stderrlog();
7) if (agentx_subagent) {
8) ds_set_boolean(DS_APPLICATION_ID, DS_AGENT_ROLE, 1);
9) }
10) init_agent("ustMain");
11) init_ustScalarSet();
12) init_snmp("ustMain");
13) if (!agentx_subagent)
14) init_master_agent(161, NULL, NULL); 
15) while(1) {
16) agent_check_and_process(1);
17) }
18) snmp_shutdown("ustMain");
19) }

按如下命令進行編譯:

gcc -g -I/usr/local/include -o ustMain ustMain.c ustScalarSet.c -lucdagent -lucdmibs -lsnmp

生成子代理程序, ustMain.

在snmpd.config配置文件中加入一行:

master agentx

以支持AgentX子代理. 并重新啟動snmpd.然后啟動 ustMain.運行相應(yīng)的工具程序, 測試是否可以訪問新加入的MIB信息.#p#

一個簡單的SNMP代理程序

實際上, 我們可以利用ucd-snmp編寫自己的SNMP代理程序. 如下文件, hsnmpd.c, 所示. 其實, 這個文件與上一個子代理程序完全相同. 我僅僅是將變量agentx_subagent賦成0.代碼如下.

hsnmpd.c :

1) #include ;
2) #include ;
3) #include ;
4) int main () {
5) int agentx_subagent=0; 
6) if (agentx_subagent) {
7) ds_set_boolean(DS_APPLICATION_ID, DS_AGENT_ROLE, 1);
8) }
9) init_agent("snmpd");
10) init_ustScalarSet();
11) init_snmp("snmpd");
12) if (!agentx_subagent)
13) init_master_agent(161, NULL, NULL); 
14) while(1) {
15) agent_check_and_process(1);
16) }
17) snmp_shutdown("snmpd");
18) }
第1-3行: 必須包含的頭文件.
第5行: 定義一個變量, 表示該代理是主代理或子代理. 
        通過ucd-snmp開發(fā)包編寫的代理程序, 既可以作為AgentX主代理, 也可以作為AgentX子代理. 
第7-9行:子代理需要初始化的內(nèi)容.
第10行:初始化代理.
第11行:初始化支持的MIB. 文件ustScalarSet.c中的函數(shù).
第12行:初始化SNMP.
第13-14行:主代理需要初始化的內(nèi)容.
第15-17行:SNMP協(xié)議PDU處理主循環(huán).
第18行:關(guān)閉SNMP, 做一些釋放資源的工作.

如下編譯:

gcc -g -I/usr/local/include -o hsnmpd hsnmpd.c ustScalarSet.c 
/usr/local/lib/libucdagent.a /usr/local/lib/libucdmibs.a /usr/local/lib/libsnmp.a

運行該程序, hsnmpd. 除了一些關(guān)于無法解釋配置文件的相關(guān)內(nèi)容的報警外, 程序運行正常. 并且, 可以用工具程序, 如snmpget, snmpwalk等訪問其中的MIB信息. 當(dāng)然, 僅僅只有UCD-SNMP-TUTORIAL-MIB中所描述的信息, 而其他的沒有實現(xiàn)的MIB信息無法獲得.

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

2010-07-01 14:53:09

SNMPMIBUCD-SNMP

2010-07-05 10:16:31

ucd-snmpSNMP Agent

2010-07-01 12:38:31

ucd-snmp

2010-07-01 13:58:50

UCD-SNMP

2010-07-02 10:18:23

ucd-snmpMIB

2010-09-26 17:09:22

日內(nèi)數(shù)據(jù)保護

2010-09-26 16:58:50

周末和夜間備份

2009-09-04 14:52:03

ADO.NET Ent

2010-07-14 09:24:22

Perl正則表達式

2010-07-19 16:11:20

Perl正則表達式

2017-11-06 07:18:35

2024-04-24 14:46:40

人工智能編碼助手

2023-10-13 00:00:00

Redis模塊空間對象

2023-03-07 08:25:39

探針Kubernetes

2009-05-07 15:02:42

OracleJoin查詢

2021-07-05 06:57:06

VMware vSph虛擬機磁盤

2024-07-01 12:42:58

2011-01-18 15:35:59

jQueryJavaScriptweb

2013-03-27 10:01:53

網(wǎng)絡(luò)應(yīng)用檢測工具

2011-06-03 11:53:06

Spring接口
點贊
收藏

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