文/大大大大峰哥
寫作目的
現階段的工作需要完成Zabbix管理Android,那么是通過SNMP進行數據傳輸,當前博主也是在探索,大家可以一起探討交流。
工作環境
Windows10、Android5.1.1系統、Ubuntu12
1、移動端與服務端互相通信**
1.1 目的
證明移動端可以與服務端進行通信,所以先去各大手機應用商城去看看別人是否有寫出直接可以通信的APP。
1.2 前提
需要配置Windwos下的SNMP的簡易服務器。********(暫時不知道這個步驟是否一定要)********
操作流程
1.3過程
通過這個工具(****Snmptester.zip****)在Windows10上可以發送指定的OID給手機SNMP管理工具(****SNMP Agent****),手機成功的接受到數據,并將需要傳輸的OID返還給Windows。
示例
這里移動端暫時通過豌豆莢下載的一個小工具 ****SNMP Agent**** ,主要是通過實現一個連接來證明手機與Windows之間是可以實現SNMP通信的。
這樣我們就證明了 移動端是可以與電腦進行一個SNMP的數據連接。
2、運用SNMP4J進行連接服務器
目前我是通過Android去與服務端通信,當然我是借助其他的包來幫助我與服務器通信,我在網上找了很多資料,發現有一遍博文成功通過SUMP4J來實現了。
2.1 下載SNMP4包
2.2 JAVA實現SNMP
編譯環境
eclipse jdk8 snmp4j-2.5.0.jar snmp4j-2.5.0-javadoc.jar
在這里主要是以孤傲蒼狼博文代碼為主,博主還沒有具體去分析代碼的意義。我這里只是在運用,而沒有去想是如何實現的,我上傳一份按照他思想的源碼。
以上操作,博主均已通過測試。
2.3 JAVA實現自定義的OID傳輸
參考資料
在這篇博文中,詳細的講解了傳遞String類型的數據與傳遞字節數組。
主要內容:VariableBinding方法中運用到了Variable類型,而Variable類型中不一定要采用OctetString,里面有一個用Integer32的實現方式。
對照組A
對照組B
對照組中的A與B,A中android控制臺上記錄的值為140,B則為13f,然后十六進制的140轉換為十進制為320,13f則為319
所以在參考資料中的博文是可行有效的。
3、移動端SNMP數據傳輸
參考資料
linux snmptrap的發送與接收 、Android-SNMP
3.1 實現snmptrap接受發送
首先需要在Linux上實現一個trap的命令接受與發送,這樣才可以知道snmptrap是否可行。這里面因為我是在mac上面做的驗證,traphandle這個命令并沒有,但是依舊可以傳遞數據,只是oid沒有創建,詳細還是看我參考資料。
配置代碼:
Conf代碼 :authcommunity execute,log,net public
traphandle .1.3.6.1.4.1.2021.251.1 /root/traptest/test.pl
其中authcommunity是為了設置所有用戶的訪問權限:可執行,記錄,傳遞。
設置traphandle(即收到.1.3.6.1.4.1.2021.251.1類OID信息時,執行test.pl)。
test.pl的內容:
#!/usr/bin/perl
use strict;
my $file="file.trap";
open(HANDOUT,">>./$file");
while()
{
print HANDOUT "$_";
}