文/大大大大峰哥
写作目的
现阶段的工作需要完成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 "$_";
}