SNMP功能开发简介 六 snmp功能开发阶段性总结
先說客戶需求:能夠通過SNMP協議獲取設備信息便于管理。客戶提出的需求信息轉化成MIB結點都是Get類請求。
背景&方案:我們的產品業務層是使用Go語言開發的,系統層基于OpenWrt(一個嵌入式的 Linux 發行版)。SNMP功能一年前在上家公司里接觸過,當時是因為生產產品的時候需要通過snmp去進行相關的升級操作,那個時候還專門學測試了一下MIB結點的添加,也能夠成功運行。雖說接觸過,但也僅僅是MIB結點的添加,這次的任務是是設備支持snmp功能,從頭開始設計snmp的話有點不現實,一方面協議很多內容很多,要設計的話考慮方方面面,短期內無法完成,另外一個方面,感覺還是有點困難,⊙﹏⊙‖∣
老板的建議是找一下相關的庫進行移植,去github上逛了一圈,Golang的SNMP版本目前還沒有完善的版本,大部分的Golang SNMP項目都是開發NMS(網絡管理工作站)而不是SNMP Agent代理,所以就采用C版本的net-snmp,net-snmp是開源的SNMP項目,功能完善而且易于二次開發,基本方案是將net-snmp里面的代理功能嵌入到我們的程序中,然后在根據客戶需求添加私有MIB結點。代碼采用CGO編寫,即Go代碼調用net-snmp庫的形式。
方案架構:啟動一個獨立的代理線程處理外部snmp請求,代理線程執行net-snmp庫的代理入口(snmpd.c/SnmpDaemonMain()),net-snmp程序默認是讀取配置文件的方式來啟動,根據需求要能夠允許用戶通過web頁面進行配置,所以這里采用的方案是主進程監聽web配置刷新事件,如果收到配置刷新的話,將配置更新到全局變量中,然后通過發送信號通知線程刷新配置,代理線程收到信號會進行相關的操作。這里的操作需要對net-snmp庫代碼做一些修改,即增加一些API用于從共享變量中讀取數據。
功能開發:
待開發功能:
總結
以上是生活随笔為你收集整理的SNMP功能开发简介 六 snmp功能开发阶段性总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 湖南军校哪些好?
- 下一篇: Golang Study 三 map的顺