SNMP功能開發簡介 一 net-snmp編譯與安裝

部門產品還沒有snmp功能,應客戶需求,最近開始開發snmp功能。snmp即簡單網絡管理協議,管理很簡單,但實際開發還是有點工作量,協議有三個版本,分爲1,2c,3。相關的RFC文檔也比較多,從零開始開發難度還是比較大,和技術經理討論了下,可以基於現有方案做二次開發,移植。產品平臺基於openwrt,armlinux。上層業務是用Golang開發,在github上看了下,現有的Go 版本的snmp實現還不是很全面,大部分gosnmp僅僅實現了nms(網絡管理工作站)功能,對於snmp agent代理功能還沒有很好的方案。現有的比較完善的方案是net-snmp,這是一個開源的snmp實現方案,基於c語言,功能比較全,支持三個版本的snmp以及v4/v6等,此外兄弟部門的產品也是基於net-snmp開發,可以參考一下,所以就定了方案,移植net-snmp。具體包括使用cgo方式調用netsnmp的c庫,添加私有mib等。

在開發之前,需要先熟悉一下net-snmp的編譯,運行等。

下面是在ubuntu上安裝net-snmp的方式

//創建目錄
cd ~
mkdir -p netsnmp  && cd netsnmp

//下載net-snmp源代碼
wget https://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.3/net-snmp-5.7.3.tar.gz

//解壓
tar -zxvf net-snmp-5.7.3.tar.gz

//依賴庫安裝
sudo apt-get install libperl-dev

//配置,輸入enter選擇默認配置
 ./configure --with-default-snmp-version="2" --with-sys-contact="mason" --with-sys-location="shenzhen" 
--with-logfile="/var/log/snmpd.log" --with-persistent-directory="/var/net-snmp"

//編譯
make

//安裝
sudo make install

//設置動態庫路徑
cd ~ 
echo export LD_LIBRARY_PATH=/usr/local/lib >> .bashrc
source .bashrc

//測試
snmpget --version

如果出現  libnetsnmp.so.30: cannot open shared object file: No such file or directory,source ~/.bashrc就可以了

這個時候,測試snmpd,在啓動snmpd之前需要設置好配置文件,可以簡單的把安裝包裏面的EXAMPLE.conf複製到/usr/local/share/snmp/snmpd.conf目錄下,修改下監聽端口。

啓動snmpd

//-Le選項是打印程序啓動的錯誤
sudo snmpd -f -Le &

可能遇到的問題是程序沒有啓動,自動退出,這時候看下打印或者看/var/log/snmpd.log日誌文件。

另一個常見的錯誤是:

snmpd: error while loading shared libraries: libnetsnmpagent.so.30: cannot open shared object file: No such file or directory

這種情況需要確認下/usr/local/lib目錄下是不是真的沒有該文件,如果沒有的話,就去編譯目錄找到相關文件手動複製過來。

如果存在該文件的話,可能是路徑不對,可以手動將/usr/local/lib添加到 /etc/ld.so.conf文件中,然後sudo ldconf

如果存在Error opening specified endpoint "udp:0.0.0.0:161"錯誤的話,有可能是配置文件問題,也有可能端口已經被佔用。

當運行成功後,可以在windows上安裝mib browser來測試一下

mib-browser 下載 :https://www.softpedia.com/get/Internet/Other-Internet-Related/ManageEngine-MibBrowser-Free-Tool.shtml

安裝的時候記得不要安裝在系統盤,以免出現mib無法加載錯誤。

安裝完成後打開mibbrowser,設置目的地址爲虛擬機ubuntu地址查詢即可:

以上就是net-snmp在ubuntu上編譯、安裝與測試的基本步驟。

但是對於我們的方案來說,這只是第一步,畢竟實際的運行是在arm板子上的,需要交叉編譯,此外還有添加私有mib等等。這些內容日後在詳細討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章