成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

網絡 網絡管理
下面我們對ucd-snmp工具中的snmpd擴展的相關內容進行了詳盡的介紹。首先我們介紹了三種方法:靜態鏈接、共享鏈接庫和 AgentX子代理。

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

snmpd [OPTIONS] [LISTENING ADDRESSES]

語法格式是snmpd后面加上選項或者監聽地址。

snmpd擴展方法一: 靜態鏈接形式

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

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

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

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

# /usr/local/sbin/snmpd

在用相應的工具程序檢索新加入的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

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

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

# 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

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

rwcommunity hyj
rocommunity public

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

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

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

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

關于代理程序以及工具程序相應的配置情況, 參見snmp.conf, snmpd.conf, 和snmpconf的man手冊.#p#

snmpd擴展方法三: AgentX子代理協議

首先, 編寫一個子代理主函數文件, 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.運行相應的工具程序, 測試是否可以訪問新加入的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開發包編寫的代理程序, 既可以作為AgentX主代理, 也可以作為AgentX子代理. 
第7-9行:子代理需要初始化的內容.
第10行:初始化代理.
第11行:初始化支持的MIB. 文件ustScalarSet.c中的函數.
第12行:初始化SNMP.
第13-14行:主代理需要初始化的內容.
第15-17行:SNMP協議PDU處理主循環.
第18行:關閉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. 除了一些關于無法解釋配置文件的相關內容的報警外, 程序運行正常. 并且, 可以用工具程序, 如snmpget, snmpwalk等訪問其中的MIB信息. 當然, 僅僅只有UCD-SNMP-TUTORIAL-MIB中所描述的信息, 而其他的沒有實現的MIB信息無法獲得.

責任編輯:佟健 來源: 比特網
相關推薦

2010-07-01 14:53:09

SNMPMIBUCD-SNMP

2010-07-01 12:38:31

ucd-snmp

2010-07-05 10:16:31

ucd-snmpSNMP Agent

2010-07-01 13:58:50

UCD-SNMP

2010-07-02 10:18:23

ucd-snmpMIB

2010-09-26 17:09:22

日內數據保護

2010-07-14 09:24:22

Perl正則表達式

2010-09-26 16:58:50

周末和夜間備份

2009-09-04 14:52:03

ADO.NET Ent

2010-07-19 16:11:20

Perl正則表達式

2017-11-06 07:18:35

2023-10-13 00:00:00

Redis模塊空間對象

2024-04-24 14:46:40

人工智能編碼助手

2011-01-18 15:35:59

jQueryJavaScriptweb

2009-05-07 15:02:42

OracleJoin查詢

2021-07-05 06:57:06

VMware vSph虛擬機磁盤

2023-03-07 08:25:39

探針Kubernetes

2024-07-01 12:42:58

2011-06-03 11:53:06

Spring接口

2013-03-27 10:01:53

網絡應用檢測工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99免费在线 | 成人精品国产一区二区4080 | 色视频网站在线观看 | 精品少妇一区二区三区在线播放 | 欧美日韩国产一区二区三区 | 91视频在线观看免费 | av一二三区| 日韩欧美中文 | 羞羞色影院 | 91视频播放 | 国产欧美一区二区三区久久手机版 | 久久99国产精一区二区三区 | 欧美一级做性受免费大片免费 | 一区二区国产精品 | 不卡一区二区三区四区 | 九九九视频在线 | www.操.com | 久久日韩粉嫩一区二区三区 | 超碰激情 | 国产伦精品一区二区三区四区视频 | 欧美一区二区在线视频 | 超碰成人免费观看 | 青青草这里只有精品 | 色五月激情五月 | 国产片侵犯亲女视频播放 | 秋霞电影院午夜伦 | 天天av网| 中文字幕乱码一区二区三区 | 国产成人精品一区二区三 | 九九亚洲| 日韩成人在线观看 | 视频一区二区在线观看 | 国产美女久久 | 自拍中文字幕 | 日韩av在线不卡 | 国产乱码精品一区二区三区忘忧草 | 国产精品18久久久久久白浆动漫 | 青青草综合 | 国产精品揄拍一区二区 | 亚洲一区在线播放 | 日韩成人在线观看 |