日期:2014-05-20 浏览次数:21013 次
//第一步测试Main方法:
//Java code
public class MainSnmpWalk{
static Logger log = Logger.getLogger(MainSnmpWalk.class);
public MainSnmpWalk(){
}
public static void main(String[] args) throws InterruptedException{
//建立一个SNMPv2c PDU,它会从system(1.3.6.1.2.1.1)OID开始游走
// SnmpWalk walk = new SnmpWalk("192.168.100.10","1.3.6.1.2.1.1.5.0");//物理位置
// SnmpWalk walk = new SnmpWalk("127.0.0.1",".1.3.6.1.2.1.25.2.2");//RAM
// SnmpWalk walk = new SnmpWalk("127.0.0.1","1.3.6.1.2.1.25.2.3.1.6");//Hard Disk
// SnmpWalk walk = new SnmpWalk("127.0.0.1",".1.3.6.1.2.1.25.5.1.1.1");//CPU Utilization
// SnmpWalk walk = new SnmpWalk("127.0.0.1","1.3.6.1.2.1.25.1");//也含本机物理总内存
//cpu:1.3.6.1.2.1.25.5.1.1.1
//memory:1.3.6.1.2.1.25.5.1.1.2 //得到的是每个进程的的内存使用值
//1.3.6.1.2.1.25.3.3.1.2.1 //一个比较通用的看设备CPU利用率的OID值。取最后一分钟的平均值。
// Linux下可以.1.3.6.1.2.1.25.2和.1.3.6.1.2.1.25.5这两个值试试
//====================================================
//.1.3.6.1.4.1.311.1.1.3.1.1.1.2.0
// SnmpWalk walk = new SnmpWalk("10.8.0.90","1.3.6.1.2.1.1.1");//系统描述
// SnmpWalk walk = new SnmpWalk("127.0.0.1","1.3.6.1.2.1.25.1.7.0");//本机物理总内存
// SnmpWalk walk = new SnmpWalk("127.0.0.1",".1.3.6.1.2.1.25.4.2.1.2");//列出系统进程
// SnmpWalk walk = new SnmpWalk("127.0.0.1",".1.3.6.1.4.1.77.1.2.25.1.1");//列出系统用户列表
// SnmpWalk walk = new SnmpWalk("127.0.0.1",".1.3.6.1.4.1.77.1.4.1");//列出域名(工作组)
// SnmpWalk walk = new SnmpWalk("127.0.0.1",".1.3.6.1.2.1.25.6.3.1.2");//列出安装的软件
// SnmpWalk walk = new SnmpWalk("127.0.0.1",".1.3.6.1.2.1.25.3.3.1.2");
//SnmpWalk walk = new SnmpWalk("127.0.0.1",".1.3.6.1.2.1.25.4.2.1.2");//当前进程列表
//可用的内存数量: .1.3.6.1.4.1.311.1.1.3.1.1.1.2.0
//磁盘利用率的OID: .1.3.6.1.4.1.311.1.1.3.1.1.5.1.3.0
//CPU的利用率: .1.3.6.1.4.1.311.1.1.3.1.1.2.1.3.1.48.0
//发送的字节数(包括组帧字符): 1.3.6.1.2.1.2.2.1.16.1
//收到的字节数(包括组帧字符): 1.3.6.1.2.1.2.2.1.10.1
//cpuPercentProcessorTime .1.3.6.1.4.1.311.1.1.3.1.1.2.1.3
//memoryAvailableKBytes (OID: .1.3.6.1.4.1.311.1.1.3.1.1.1.29)
//memoryAvailableMBytes (OID: .1.3.6.1.4.1.311.1.1.3.1.1.1.30)
//==================================================================================
// log.debug("Doing SNMPv2 walk..");
//1.3.6.1.2.1.1.6.0
// SnmpWalk walk = new SnmpWalk("192.168.100.57","1.3.6.1.2.1.1.4.0");//1.3.6.1.2.1.1.5.0
// String str = walk.doWalk();
// log.debug("主方法str: "+ str);
//==================================================================================
/**
* 在Windows操作系统上默认是没有安装snmp协议的,需要安装snmp,安装细节较简单,这里不再描述
* 1.在Windows上安装好了snmp之后,它默认是不支持SNMPv3的,需要重新安装一个SNMPv3的代理
* 2.在Windows上直接安装软件:snmpv3agent setup.exe并配置好安全名称(用户)、认证协订、认证密码、保密协定以及保密密码
* 3.设置好了之后,在代码里直接相对应就OK了.
*/
//.1.3.6.1.4.1.77.1.2.25.1.1 //1.3.6.1.2.1.1.5.0
// 用来设定安全名称(用户)、认证协订、认证的通行密码、保密协定以及保密的通行密码
log.debug("doing snmpv3 walk..");
//建立一个snmpv3c pdu,它会以kschmidt做为安全名称,md5做为认证协定
// SnmpWalk walk = new SnmpWalk("192.168.100.10","1.3.6.1.2.1.1.6.0","zmq","MD5","mysnmpzmq","DES","mysnmpzmq");
// String str3 = walk.doWalk();
// log.debug("主方法str: "+ str3);
// SnmpWalk walk = new SnmpWalk("192.168.100.11","1.3.6.1.2.1.1.6.0","zmq","MD5","mysnmpzmq","DES","mysnmpzmq");
SnmpWalk walk2 = new SnmpWalk("192.168.100.10","1.3.6.1.2.1.1.1.0"); //.1.3.6.1.2.1.2.3.1.6
String str3 = walk2.doWalk();
// String str4 = walk2.doWalk();
// log.debug("主方法str: "+ str3);
System.out.println("---result---"+str3);
// System.out.println("---result2---"+str4);
}
}
//第二步:类SnmpWalk.java
public class SnmpWalk {
public static final int WALK = 1;
private SnmpUtil _util = null;
//会建立一出一个SNMPv2c walk命令,引数是"执行agent的主机"以及"我们想要游走之OIDs的前缀(prefix)"
public SnmpWalk(String host, String oid){
_util = new SnmpUtil(host,oid,false,0);
_util.setOperation(WALK);
}
//会建立出一个SNMPv3 walk命令,前两个引数与上面建构式一样,其它引数则与SNMPv3的安全设定有关
public SnmpWalk(String host, String oid, String user, String authProtocol, String authPasshrase, String privProtocol, String privPassphrase) {
_util = new SnmpUtil(host,oid,user,authProtocol,authPasshrase,privProtocol,privPassphrase,false,0);
_util.setOperation(WALK);
}
public String doWalk() {
return _util.sendAndProcessResponse();
}
}