日期:2014-05-20 浏览次数:20825 次
//第一步测试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(); } }