1. 程式人生 > >SNMP++&Agent++開發之一

SNMP++&Agent++開發之一

本系列文章將逐步介紹HP-SNMP的開發流程,開發工具的使用,以及SNMP Agent的開發. 本系列文章主要是記錄我的學習,開發的整個過程,以備志,或供朋友們學習和參考.

    取名為SNMP++的SNMP(Simple Network Management Protocol)開發包, 是由HP(Hewlett-Packard)公司於1994-1997年開發的.基於C++面嚮物件語言開發.可實現SNMP的標準協議,有不少的網路開發人員使用,以Windows和Linux平臺較多.但是,後來不知什麼原因,HP公司沒有繼續維護升級此SNMP++程式碼,而是交由其他個體組織繼續維護,即是現在的Frank Fock組織.他們在SNMP++基礎上,又開發了agent++協議包,用於實現SNMP agent代理;agentX++協議包,用於實現SNMP Sub agent(即二級,三級...代理),以及配套使用的開發工具, 如MibDesigner, AgentPro, MibExplorer等.下面就這幾個工具做簡單的介紹.(相關的開發工具和開發包可以到網站

www.agentpp.com下載).


    (1) MibDesigner: 它是設計和編輯SNMP Mib管理資訊庫的工具.使用它,你可以開始一篇全新的Mib庫的設計,或者編輯和更改之前做好的Mib庫.所有design工作完成後,你就可以得到一個MibDesigner預設的檔案格式的Mib庫檔案了.或者將它匯出儲存為txt格式的文字檔案.


    (2) AgentPro: 生成程式碼的工具.好了,你在第一步中編輯好的Mib庫檔案,讓AgentPro幫助匯入,進行適當的設定後,即可生成Mib庫對應的C++程式碼.這些程式碼,可以在agent++開發包中使用,這也是你做SNMP agent的關鍵的一步,它實現了你所有mib庫的應用.


    (3) MibExplorer: 此工具可以幫助測試agent端,能夠完成SNMP Mib庫節點的Get/Set操作,接收SNMP Trap資訊以及Mib庫的結構的瀏覽.


    到這裡,我們開發SNMP agent所需的工具已經齊備了.下一步,開始我們的agent的開發旅程吧.


.1  開發工具的使用


.1.1  MibDesigner的安裝和使用


安裝步驟:


(1) 在網站下載MibDesigner軟體安裝包MibDesigner.msi.


(2) 下載Java SDK開發包並安裝.(目前使用的版本是 j2sdk1.4.2_12,網路搜尋即可獲得。)


(3) 執行MibDesigner.msi,按照Wizard完成安裝.


(4) MibDesigner執行需要license.正版可是要花幾百美元購買的.有需要的朋友可以跟我聯絡,我可以提供幫助.


使用方法:


軟體第一次執行,它會提示你設定Repository,這是軟體工作的路徑.你需要手工指定.完成後,就可以進入到主介面了.如下所示:


點選看大圖


    選擇File->Open->In Current Window,可以開啟demomib庫,熟悉相關的節點定義等.下面介紹如何建立一個新的mib庫檔案.(說明一下,在建立新的mib庫檔案之前,你需要有個設計規劃,此規劃針對你的SNMP開發需要,定義好你的mib庫中需要包含哪些管理資訊,trap資訊等.)


(1) 選擇File->New->In Current Window,彈出New Mib Winzard對話方塊.在Common Object Name Prefix文字框中,輸入你的mib庫節點命名的字首資訊,它最好能表示你的公司或個人的資訊.在New Mib Module Name 文字框中輸入mib庫檔案的名稱,建議大寫,以保持風格統一.點選Next執行下一步.


(2) 進入到Wizard第二步.如果你是企業使用者,則將第一個複選框選上.點選Next進入第三步,採用預設設定,點選Finish,完成Wizard引導.


(3) 這時,就可以看到設計的mib庫已經有了框架結構了.接著,我們就可以開始設計和新增mib節點啦.


    mib節點的屬性包括只讀,只寫,可讀寫,可建立這幾種型別.根據不同的需求,設定不同的屬性.


    新增完成所有的mib節點後,執行View->Check,來檢查你編輯的mib庫的正確性.這裡需要注意,你之前新增的所有節點必須包括在Group中.這是MibDesigner工具必需的,否則在check時會報錯.(據我的經驗,在使用AdventNet開發mib庫時,就沒有這個繁瑣的操作.或者從另一個方面來說,MibDesigner的要求更嚴格!)


.1.2 AgentPro2的安裝和使用


安裝步驟:

(1) 在網站下載AgentPro軟體包,是壓縮檔案。

(2) 解壓到資料夾,執行AgentPro2.exe即可。


注:執行此軟體,需要Jave SDK開發包的支援。


使用方法:


    軟體第一次執行,它會提示你設定Repository,建議將AgentPro2的Resposity設定與MibDesigner一致,這樣,修改了Mib庫之後,由AgentPro2生成程式碼比較方便。軟體啟動後,介面:


點選看大圖


    如果將Repository設定到/AgentPro2/mibreposity/資料夾,可選擇File->Open/Close Mib,開啟對話方塊,選擇要開啟的示例Mib。這樣我們可以瀏覽此軟體處理Mib庫的樹型結構。下面介紹如何將我們編輯完成的Mib庫轉換成可用的C++程式碼。


(1) 將MibDesigner編輯好的Mib庫檔案(本文中使用myMib作為示例)放到Repository資料夾中,這樣我們就可以方便的開啟它。


(2) File->Open/Close Mib,開啟myMib。這時,我們可以看到Mib的樹型結構,與在MibDesigner中看到的一樣。


(3) 現在需要設定Project,這是保證順利生成原始碼的關鍵。對於大部分使用者,為了方便,作為示例,我們選擇Project->Open,指定檔案到/AgentPro2/projects/agent++v3.5.17.prj,選定。這樣我們需要的工程模板就有了。選擇Project->Edit,開啟的介面如下:


點選看大圖


    我們可以看到,這個工程檔案,配置了生成原始碼所需的各個模板,include模板,Makefile模板,module_init模板,header檔案模板,source檔案模板。這些模板檔案放在/AgentPro2/templates/agent++v3.5.17/資料夾。我們可以修改這些模板的指定路徑。在Project Winzard對話方塊,選擇某一項後,Edit即可。同時,需要設定生成的目標檔案存放的路徑,預設路徑是..\agent++\agentgen\agent\include和..\agent++\agentgen\agent\src\。保持此預設值,後面編譯時用的方便。這裡有一點需注意,在v3.5.17版本,模板存在一個bug,不能正常編譯(具體什麼bug,可以自己研究研究:)。所以,我們不妨把所有模板都選用v3.5.23。


(4) Project->Edit開啟Project Winzard對話方塊,執行Next,第二步不需要設定,Nex到第三步,將已經開啟的myMib庫的所有模組新增到Mibs to Process,然後Finish。這樣,就指定好了所有需要生成原始碼的Mib庫模組。


(5) 經過一番設定,終於可以生成程式碼了!執行Project->Generate,等待幾秒鐘,OK。轉到我們之前指定的生成目錄資料夾下,好了,所有的h和cpp檔案已經在那了!


    經過以上的操作,我們得到了由myMib生成的原始碼。在下一篇文章中,我將介紹編譯snmp++和agent++的方法和注意步驟。


.1.3 MibExplorer的使用


MibExplorer是一款提供Snmp的Get/Set操作,接收Snmp Trap的軟體,跟其他的第三方軟體功能類似,使用起來比較簡單,暫時不作介紹。