`
dtt3401885
  • 浏览: 17157 次
文章分类
社区版块
存档分类
最新评论
阅读更多
get方法
1.3.6.1.2.1.1.1.0//基本信息
1.3.6.1.2.1.1.5.0//主机信息
walk方法(所有oid 都会得到一个数组值)
磁盘与内存
1.3.6.1.2.1.25.2.3.1.4 磁盘簇大小
1.3.6.1.2.1.25.2.3.1.5 磁盘总量
1.3.6.1.2.1.25.2.3.1.6 磁盘已用
1.3.6.1.2.1.25.2.3.1.3 查询磁盘名称
计算方法(循环数组,对应计算):
簇大小* 磁盘总量=总容量
簇大小* 磁盘已用=使用容量
使用容量/总容量=磁盘使用率
总容量-使用容量=可用容量
其中数组最后2个分别为虚拟内存与物理内存
网卡(网卡数据为开启snmp服务开始统计,所以计算方法为 第二次取值减去第一次取值再除以取值间隔时间为这段时间内的平均值)
.1.3.6.1.2.1.2.2.1.2 网卡名称
.1.3.6.1.2.1.2.2.1.10 接收字节
.1.3.6.1.2.1.2.2.1.16 发送字节
.1.3.6.1.2.1.2.2.1.11 接收数据包
.1.3.6.1.2.1.2.2.1.17 发送数据包
cpu负载
1.3.6.1.2.1.25.3.3.1.2 负载
系统进程
.1.3.6.1.2.1.25.4.2.1.2 系统进程
安装列表
.1.3.6.1.2.1.25.6.3.1.2 安装列表









采集方法 用的sping 定时采集 并且为groovy语言
package asiacomproject

import org.snmp4j.PDU;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.VariableBinding;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.TimerTask;
import groovy.sql.Sql;
import com.detao.dtma.utils.IpLocation;

import com.detao.dtma.database.DataBase;
import com.detao.dtma.utils.EmailUtils;
import  com.detao.dtma.utils.Configuration;
import cn.net.asiacom.snmp.SnmpWalk;
import cn.net.asiacom.snmp.SnmpGet;


class GetsnmpService extends TimerTask {

static transactional = false
static news = 0
protected DataBase dataBase;
public void setDataBase(DataBase dataBase) {
this.dataBase = dataBase;
}
def serviceMethod() {

}
/**
*每天收集SNMP信息
*/
private void sendMain(){

Connection conn = null
PreparedStatement pstmt = null
ResultSet rs = null
try {
conn = dataBase.getConnection()
if (conn != null) {
conn.setAutoCommit(false)

//要对那一台服务器进行采集
String finddevice="select t.id ,t.sn,t.ip1,t.snmpps from DEVICE t where t.snmp='1' and t.snmpps is not null and t.ip1 is not null";

pstmt = conn.prepareStatement(finddevice)

rs = pstmt.executeQuery()

   while(rs.next()){
   long snmpid ;
   Long deviceid=rs.getLong(1)
   String ip=rs.getString(3)
   String pas=rs.getString(4)
   String sn=rs.getString(2)
 
   String findsnmp="select t.id,t.repetition from SNMP t where t.device_id=?"
   pstmt = conn.prepareStatement(findsnmp);
   pstmt.setLong(1, deviceid);
   ResultSet rs1 = pstmt.executeQuery()
   SnmpGet gets=new SnmpGet();
   List<List<String>> jiben=gets.getSnmpget(ip,pas,"1.3.6.1.2.1.1.1.0")//基本信息
   List<List<String>> zhuji=gets.getSnmpget(ip,pas,"1.3.6.1.2.1.1.5.0")//主机信息
   //long aid
    //while(rs.next()){
  // aid = rs.getLong(1);
  // snmpid=aid
   // }
pstmt = conn.prepareStatement("SELECT HIBERNATE_SEQUENCE.NEXTVAL FROM DUAL");
ResultSet rssnmp = pstmt.executeQuery();
rssnmp.next();
long aid = rssnmp.getLong(1);
snmpid=aid
   if(!rs1.next()){
String insertsnmp="INSERT into SNMP (id,version,date_created, last_updated,sysname,sysdescribe,os,device_id,repetition)VALUES( ?, 0, SYSDATE, SYSDATE, ?, ?, ?, ?,0)"  
pstmt = conn.prepareStatement(insertsnmp);
pstmt.setLong(1,aid);
pstmt.setString(2, getstring(zhuji[0]));
pstmt.setString(3, getstring(jiben[1]));
pstmt.setString(4, getstring(zhuji[1]));
pstmt.setLong(5, deviceid);
    int rsu = pstmt.executeUpdate();
   }else if(rs1.getInt(2)==1){
     snmpid=rs1.getLong(1)
String insertsnmp="update  SNMP set sysname=?,sysdescribe=?,os=?,repetition=?"
pstmt = conn.prepareStatement(insertsnmp);
pstmt.setString(1, getstring(zhuji[0]));
pstmt.setString(2, getstring(jiben[1]));
pstmt.setString(3, getstring(zhuji[1]));
pstmt.setInt(4, 0);
int rsu = pstmt.executeUpdate();
   }else{
   snmpid=rs1.getLong(1)
   }

   //硬盘跟内存
    pstmt = conn.prepareStatement("SELECT HIBERNATE_SEQUENCE.NEXTVAL FROM DUAL");
    ResultSet rshd = pstmt.executeQuery();
    rshd.next();
    long hdid_temp = rshd.getLong(1);
SnmpWalk walk=new SnmpWalk();
String cuhdOid="1.3.6.1.2.1.25.2.3.1.4"
List<List<String>> cuhd=walk.getSnmp(ip, pas, cuhdOid);
String allhdOid="1.3.6.1.2.1.25.2.3.1.5"
List<List<String>> allhd=walk.getSnmp(ip, pas, allhdOid);
String usehdOid="1.3.6.1.2.1.25.2.3.1.6"
List<List<String>> usehd=walk.getSnmp(ip, pas, usehdOid);
String namehdOid="1.3.6.1.2.1.25.2.3.1.3"
List<List<String>> hdname=walk.getSnmp(ip, pas, namehdOid);
    String inserthd="INSERT into SNMP_HD (id,version,date_created, last_updated,hdname,hdcu,hdalldate,hdusedate,snmp_id,chinaname)VALUES( ?, 0, SYSDATE, SYSDATE, ?, ?, ?, ?,?,?)"
pstmt = conn.prepareStatement(inserthd);
pstmt.setLong(1, hdid_temp);
pstmt.setString(2, getstring(hdname[0]));
pstmt.setString(3, getstring(cuhd[0]));
pstmt.setString(4, getstring(allhd[0]));
pstmt.setString(5, getstring(usehd[0]));
pstmt.setLong(6, snmpid);
pstmt.setString(7, getstring(hdname[2]));
int rchd = pstmt.executeUpdate();//硬盘跟内存结束
//网卡

pstmt = conn.prepareStatement("SELECT HIBERNATE_SEQUENCE.NEXTVAL FROM DUAL");
ResultSet rsnet = pstmt.executeQuery();
rsnet.next();
long netid_temp = rsnet.getLong(1);
String bitgetOid=".1.3.6.1.2.1.2.2.1.10"
String bitsetOid=".1.3.6.1.2.1.2.2.1.16"
String pagegetOid=".1.3.6.1.2.1.2.2.1.11"
String pagesetOid=".1.3.6.1.2.1.2.2.1.17"
String netnameoid=".1.3.6.1.2.1.2.2.1.2"
List<List<String>> bitget=walk.getSnmp(ip, pas, bitgetOid);
List<List<String>> bitset=walk.getSnmp(ip, pas, bitsetOid);
List<List<String>> pageget=walk.getSnmp(ip, pas, pagegetOid);
List<List<String>> pageset=walk.getSnmp(ip, pas, pagesetOid);
List<List<String>> netname=walk.getSnmp(ip, pas, netnameoid);
String insertnet="INSERT into SNMP_Network (id,version,date_created, last_updated,networkname,networkdateset,networkdateget,networkset,networkget,snmp_id,repetition)VALUES( ?, 0, SYSDATE, SYSDATE, ?, ?, ?, ?,?,?,?)"
pstmt = conn.prepareStatement(insertnet);
pstmt.setLong(1, hdid_temp);
pstmt.setString(2, getstring(netname[2]));
pstmt.setString(3, getstring(bitget[0]));
pstmt.setString(4, getstring(bitset[0]));
pstmt.setString(5, getstring(pageget[0]));
pstmt.setString(6, getstring(pageset[0]));
pstmt.setLong(7, snmpid);
pstmt.setInt(8, news);
int rcnet = pstmt.executeUpdate();//网卡结束
//CPU负载
pstmt = conn.prepareStatement("SELECT HIBERNATE_SEQUENCE.NEXTVAL FROM DUAL");
ResultSet rsLoad = pstmt.executeQuery();
rsLoad.next();
long loadid_temp = rsLoad.getLong(1);
String loadOid="1.3.6.1.2.1.25.3.3.1.2"
List<List<String>> load=walk.getSnmp(ip, pas, loadOid);
String insertload="INSERT into SNMP_LOAD (id,version,date_created, last_updated,loadname,loaddate,snmp_id)VALUES( ?, 0, SYSDATE, SYSDATE, ?,?,?)"
pstmt = conn.prepareStatement(insertload);
pstmt.setLong(1, loadid_temp);
pstmt.setString(2, getstring(load[1]));
pstmt.setString(3, getstring(load[0]));
pstmt.setLong(4, snmpid);
int rcload= pstmt.executeUpdate(); //CPU负载结束
//系统进程
pstmt = conn.prepareStatement("SELECT HIBERNATE_SEQUENCE.NEXTVAL FROM DUAL");
ResultSet rssys = pstmt.executeQuery();
rssys.next();
long sysid_temp = rssys.getLong(1);
String sysOid=".1.3.6.1.2.1.25.4.2.1.2"
List<List<String>> sys=walk.getSnmp(ip, pas, sysOid);
String insertsys="INSERT into SNMP_SYSPRO (id,version,date_created, last_updated,sysproname,sysprodate,snmp_id)VALUES( ?, 0, SYSDATE, SYSDATE, ?,?,?)"
pstmt = conn.prepareStatement(insertsys);
pstmt.setLong(1, sysid_temp);
pstmt.setString(2, getstring(sys[1]));
pstmt.setString(3, getstring(sys[0]));
pstmt.setLong(4, snmpid);
int rcsys= pstmt.executeUpdate(); //系统进程结束
//软件安装列表
pstmt = conn.prepareStatement("SELECT HIBERNATE_SEQUENCE.NEXTVAL FROM DUAL");
ResultSet rsinstall = pstmt.executeQuery();
rsinstall.next();
long installid_temp = rsinstall.getLong(1);
String installOid=".1.3.6.1.2.1.25.6.3.1.2"
List<List<String>> install=walk.getSnmp(ip, pas, installOid);
String insertinstall="INSERT into SNMP_INSTALL (id,version,date_created, last_updated,installname,installdate,snmp_id)VALUES( ?, 0, SYSDATE, SYSDATE, ?,?,?)"
pstmt = conn.prepareStatement(insertinstall);
pstmt.setLong(1, installid_temp);
pstmt.setString(2, getstring(install[1]));
pstmt.setString(3, getstring(install[2]));
pstmt.setLong(4, snmpid);
int rcinstall= pstmt.executeUpdate(); //软件安装列表结束
//IO跟cpu没有存,磁盘跟内存在一个表
//磁盘查询公式
//hrStorageAllocationUnits是簇的大小
//hrStorageSize是有多少簇,两者想乘就是总容量
//hrStorageUsed是已使用多少,跟总容量相除就是占用率

}

   news=1


}
conn.commit()
} catch (Exception e) {
   if (conn != null) {
try {
conn.rollback();
} catch (SQLException e1) {
}
   }
e.printStackTrace()
}finally {
dataBase.close(conn, pstmt, rs);
}
}
private static String getstring(List snmplist){
String str="";
for(int i=0;i<snmplist.size();i++){
str+=snmplist[i].toString().trim()+","
}
return str
}
@Override
public void run() {
sendMain()

}

}

get 方法
package cn.net.asiacom.snmp;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.Integer32;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.Variable;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;

public class SnmpGet {

       private static Snmp snmp = null;

       private static Address targetAddress = null;

       public void initComm(String ipStr) throws IOException {
              // 设置Agent方的IP和端口
             /// targetAddress = GenericAddress.parse("udp:"+ipStr+"/161");
             // TransportMapping transport = new DefaultUdpTransportMapping();
             // snmp = new Snmp(transport);
            //  transport.listen();
       }

       public ResponseEvent sendPDU(PDU pdu) throws IOException {
              // 设置 target
              CommunityTarget target = new CommunityTarget();
              target.setCommunity(new OctetString("public"));
              target.setAddress(targetAddress);
              // 通信不成功时的重试次数
              target.setRetries(2);
              // 超时时间
              target.setTimeout(1500);
              target.setVersion(SnmpConstants.version2c);
              //v3
              //target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
              //target.setSecurityName(new OctetString("ray"));
              // 向Agent发送PDU,并返回Response
              return snmp.send(pdu, target);
       }
      
       public void setPDU() throws IOException {
              // set PDU
              PDU pdu = new PDU();
              pdu.add(new VariableBinding(new OID(".1.3.6.1.2.1.2.1.0"), new OctetString("CHENZHAOZHEN")));
              pdu.setType(PDU.SET);  
              //sendPDU(pdu);
              ResponseEvent resEvt = sendPDU(pdu);
              PDU response = resEvt.getResponse();
              System.out.println(resEvt.getResponse().toString());
              if(response.getErrorIndex()==PDU.noError&&response.getErrorStatus()==PDU.noError){//判断返回报文是否正确
                  VariableBinding vb = (VariableBinding) response.getVariableBindings().firstElement();
                  Variable var = vb.getVariable();
                  if(var.equals("CHENZHAOZHEN")){//比较返回值和设置值
                      System.out.println("SET操作成功 !");
                  }else{
                      System.out.println("SET操作失败 !");
                  }
              }else{
                  try {
throw new Exception("错误信息:"+response.getErrorStatusText());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
              }
             
       }
       static  List<List<String>> getSnmpget(final String ip, final String community, final String targetOid) throws IOException {
       ArrayList<List<String>> hashmap = new ArrayList<List<String>> ();
          List<String>  variable=new ArrayList<String> ();
          List<String>  snmpoid=new ArrayList<String> ();
       // 设置Agent方的IP和端口
           targetAddress = GenericAddress.parse("udp:"+ip+"/161");
           TransportMapping transport = new DefaultUdpTransportMapping();
           snmp = new Snmp(transport);
           transport.listen();
           PDU pdu = new PDU();
           pdu.add(new VariableBinding(new OID(targetOid)));
           pdu.setType(PDU.GET);
           // 设置 target
           CommunityTarget target = new CommunityTarget();
           target.setCommunity(new OctetString(community));
           target.setAddress(targetAddress);
           // 通信不成功时的重试次数
           target.setRetries(2);
           // 超时时间
           target.setTimeout(1500);
           target.setVersion(SnmpConstants.version2c);
           //v3
           //target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
           //target.setSecurityName(new OctetString("ray"));
           // 向Agent发送PDU,并返回Response
           ResponseEvent respEvnt=snmp.send(pdu, target);
            if (respEvnt != null && respEvnt.getResponse() != null) {
                Vector<VariableBinding> recVBs = (Vector<VariableBinding>) respEvnt.getResponse().getVariableBindings();
                //System.out.println(recVBs);
                for (int i = 0; i < recVBs.size(); i++) {
                       VariableBinding recVB = recVBs.elementAt(i);
                       variable.add(recVB.getOid().toString());
                       snmpoid.add(recVB.getVariable().toString());
                      // System.out.println(recVB.getOid() + " : " + recVB.getVariable());
                }
         }
    
  
   hashmap.add(variable);
   hashmap.add(snmpoid);
   return  hashmap;
  
  
   }
       public void getPDU(String oidStr) throws IOException {
              // get PDU
              PDU pdu = new PDU();
              pdu.add(new VariableBinding(new OID(oidStr)));
              pdu.setType(PDU.GET);
              //pdu.add(new VariableBinding(new OID(".1.3.6.1.2.1.1.5.0"), new OctetString("CHENZHAOZHEN")));
              //pdu.setType(PDU.SET);
              readResponse(sendPDU(pdu));
       }
      
       public void readResponse(ResponseEvent respEvnt) {
              // 解析Response
              if (respEvnt != null && respEvnt.getResponse() != null) {
                     Vector<VariableBinding> recVBs = (Vector<VariableBinding>) respEvnt.getResponse().getVariableBindings();
                     System.out.println(recVBs);
                     for (int i = 0; i < recVBs.size(); i++) {
                            VariableBinding recVB = recVBs.elementAt(i);
                            System.out.println(recVB.getOid() + " : " + recVB.getVariable());
                     }
              }
       }
      
      
       public static void main(String[] args) {
              try {
                     SnmpGet util = new SnmpGet();
                     util.initComm("192.168.0.190");
                     //util.setPDU();
                     //获取机器名
                     //String oidStr = ".1.3.6.1.2.1.1.5.0";
                     //系统运行时间(SNMP客户端运行的时间,格式如下“时:分:秒.毫秒”)
                     //String oidStr1 = ".1.3.6.1.2.1.1.3.0";
                       String oidStr =  "1.3.6.1.2.1.1.1.0";
                     util.getPDU(oidStr);
              } catch (IOException e) {
                     e.printStackTrace();
              }
       }
}
walk方法
package cn.net.asiacom.snmp;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.Integer32;
import org.snmp4j.smi.Null;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.Variable;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;

/**
* 演示:WALK的方式获取值
*
* blog http://www.micmiu.com
*
* @author Michael
*/
public class SnmpWalk {

public static final int DEFAULT_VERSION = SnmpConstants.version2c;
public static final String DEFAULT_PROTOCOL = "udp";
public static final int DEFAULT_PORT = 161;
public static final long DEFAULT_TIMEOUT = 3 * 1000L;
public static final int DEFAULT_RETRY = 3;

/**
* 创建对象communityTarget
*
* @param targetAddress
* @param community
* @param version
* @param timeOut
* @param retry
* @return CommunityTarget
*/
public static CommunityTarget createDefault(String ip, String community) {
Address address = GenericAddress.parse(DEFAULT_PROTOCOL + ":" + ip
+ "/" + DEFAULT_PORT);
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString(community));
target.setAddress(address);
target.setVersion(DEFAULT_VERSION);
target.setTimeout(DEFAULT_TIMEOUT); // milliseconds
target.setRetries(DEFAULT_RETRY);
return target;
}

/**
* @param ip
* @param community
* @param oid
*/
public static void snmpWalk(String ip, String community, String targetOid) {

CommunityTarget target = SnmpWalk.createDefault(ip, community);
TransportMapping transport = null;
Snmp snmp = null;
try {
transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);
transport.listen();

PDU pdu = new PDU();
OID targetOID = new OID(targetOid);
pdu.add(new VariableBinding(targetOID));

boolean finished = false;
System.out.println("----> demo start <----");
while (!finished) {
VariableBinding vb = null;
ResponseEvent respEvent = snmp.getNext(pdu, target);

PDU response = respEvent.getResponse();

if (null == response) {
System.out.println("responsePDU == null");
finished = true;
break;
} else {
vb = response.get(0);
}
// check finish
finished = checkWalkFinished(targetOID, pdu, vb);
if (!finished) {
//System.out.println("==== walk each vlaue :");
//System.out.println(vb.getOid() + " = "+ vb.getVariable().toString());
if(getChinese(vb.getVariable().toString())!=null){
System.out.println("111111111");
System.out.println(vb.getOid() + " = "+ getChinese(vb.getVariable().toString()));
}else{
System.out.println("2222222222");
System.out.println(vb.getOid() + " = "+ vb.getVariable().toString());
}

//System.out.println(vb.getOid() + " = " + vb.getVariable().toString());
//System.out.println(vb.getOid() + " = " + getChinese(vb.getVariable().toString()));

// Set up the variable binding for the next entry.
pdu.setRequestID(new Integer32(0));
pdu.set(0, vb);
} else {
System.out.println("SNMP walk OID has finished.");
snmp.close();
}
}
System.out.println("----> demo end <----");
} catch (Exception e) {
e.printStackTrace();
System.out.println("SNMP walk Exception: " + e);
} finally {
if (snmp != null) {
try {
snmp.close();
} catch (IOException ex1) {
snmp = null;
}
}
}

}



private static String getChinese(String octetString) {
try{
            String[] temps = octetString.split(":");
            byte[] bs = new byte[temps.length];
            for(int i=0;i<temps.length;i++)
                bs[i] = (byte)Integer.parseInt(temps[i],16);
          
            return new String(bs,"GB2312");
        }catch(Exception e){
            return null;
        }
}

/**
* 1)responsePDU == null<br>
* 2)responsePDU.getErrorStatus() != 0<br>
* 3)responsePDU.get(0).getOid() == null<br>
* 4)responsePDU.get(0).getOid().size() < targetOID.size()<br>
* 5)targetOID.leftMostCompare(targetOID.size(),responsePDU.get(0).getOid())
* !=0<br>
* 6)Null.isExceptionSyntax(responsePDU.get(0).getVariable().getSyntax())<br>
* 7)responsePDU.get(0).getOid().compareTo(targetOID) <= 0<br>
*
* @param resquestPDU
* @param targetOID
* @param responsePDU
* @param vb
* @return
*/
private static boolean checkWalkFinished(OID targetOID, PDU pdu,
VariableBinding vb) {
boolean finished = false;
if (pdu.getErrorStatus() != 0) {
//System.out.println("[true] responsePDU.getErrorStatus() != 0 ");
//System.out.println(pdu.getErrorStatusText());
finished = true;
} else if (vb.getOid() == null) {
//System.out.println("[true] vb.getOid() == null");
finished = true;
} else if (vb.getOid().size() < targetOID.size()) {
//System.out.println("[true] vb.getOid().size() < targetOID.size()");
finished = true;
} else if (targetOID.leftMostCompare(targetOID.size(), vb.getOid()) != 0) {
//System.out.println("[true] targetOID.leftMostCompare() != 0");
finished = true;
} else if (Null.isExceptionSyntax(vb.getVariable().getSyntax())) {
//System.out
// .println("[true] Null.isExceptionSyntax(vb.getVariable().getSyntax())");
finished = true;
} else if (vb.getOid().compareTo(targetOID) <= 0) {
//System.out.println("[true] Variable received is not "
// + "lexicographic successor of requested " + "one:");
//System.out.println(vb.toString() + " <= " + targetOID);
finished = true;
}
return finished;

}

static  List<List<String>> getSnmp(final String ip, final String community, final String targetOid) {

    ArrayList<List<String>> hashmap = new ArrayList<List<String>> ();
    List<String>  variable=new ArrayList<String> ();
    List<String>  chinavariable=new ArrayList<String> ();
    List<String>  snmpoid=new ArrayList<String> ();
CommunityTarget target = SnmpWalk.createDefault(ip, community);

TransportMapping transport = null;
Snmp snmp = null;
try {
transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);
transport.listen();

PDU pdu = new PDU();
OID targetOID = new OID(targetOid);
pdu.add(new VariableBinding(targetOID));

boolean finished = false;

while (!finished) {
VariableBinding vb = null;
ResponseEvent respEvent = snmp.getNext(pdu, target);

PDU response = respEvent.getResponse();

if (null == response) {

finished = true;
break;
} else {
vb = response.get(0);
}
// check finish
finished = checkWalkFinished(targetOID, pdu, vb);
if (!finished) {
//System.out.println("==== walk each vlaue :");
    variable.add(vb.getVariable().toString());
snmpoid.add(vb.getOid().toString());
//System.out.println(vb.getOid() + " = "+ vb.getVariable().toString());
if(getChinese(vb.getVariable().toString())!=null){
chinavariable.add(getChinese(vb.getVariable().toString()));
//variable.add(getChinese(vb.getVariable().toString()));
    }else{
    chinavariable.add(vb.getVariable().toString());
    //variable.add(vb.getVariable().toString());
   }

//System.out.println(getSnmp);
//System.out.println(vb.getOid() + " = " + getChinese(vb.getVariable().toString()));

// Set up the variable binding for the next entry.
pdu.setRequestID(new Integer32(0));
pdu.set(0, vb);
} else {

snmp.close();
}
}

} catch (Exception e) {
e.printStackTrace();

} finally {
if (snmp != null) {
try {
snmp.close();
} catch (IOException ex1) {
snmp = null;
}
}
}
//System.out.println(chinavariable);
hashmap.add(variable);
hashmap.add(snmpoid);
hashmap.add(chinavariable);
return  hashmap;


}
/**
*
* @param args
*/
public static void main(String[] args) {
String ip = "192.168.0.109";
//String ip = "127.0.0.1";
String community = "public";
// 1.3.6.1.2.1.2.2.1.2
//查看进行列表
//String targetOid = ".1.3.6.1.2.1.25.4.2.1.2";
//查看软件安装列表
//String targetOid = ".1.3.6.1.2.1.25.6.3.1.2";
//CPU负载
//String targetOid = ". 1.3.6.1.2.1.25.3.3.1.2";
String targetOid="1.3.6.1.2.1.25.2.3.1.3";
SnmpWalk.snmpWalk(ip, community, targetOid);
//List<List<String>> aaa= getSnmp(ip, community, targetOid);
//System.out.println(aaa);
//GetSnmp ass=new GetSnmp();
//ass.snmpinto();
}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics