TemperatureEntryWalker.java
3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.sitech.ismp.coll.net.cisco;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;
import org.snmp4j.smi.VariableBinding;
import com.sitech.ismp.snmp.CommSnmpGet;
public class TemperatureEntryWalker {
//1.3.6.1.2.1.4.20.1.1
public static final String ROOT_OID = "1.3.6.1.4.1.9.9.13.1.3.1.2";
public static final int ATTRIBCOUNT = 6;
private String IP;
Vector temperatureVecotor = new Vector();
private void addEntry(TemperatureEntry temperature) {
temperatureVecotor.add(temperature);
}
public Vector getEntry(){
return temperatureVecotor;
}
public void walker(String ip, int port, String community){
this.IP = ip;
CommSnmpGet snmpGet = new CommSnmpGet(ip, port, community);
snmpGet.init();
snmpGet.setRootOid(ROOT_OID);
try {
snmpGet.workTable(ROOT_OID);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("[IP: " + IP + " 采集RunEntry失败]");
}
HashMap hm = snmpGet.getWalkHashMap();
Set set = hm.keySet();
Iterator it = set.iterator();
while (it.hasNext()) {
String key = (String) it.next();
String value = (String) hm.get(key);
// 填充Index
TemperatureEntry temperatrueEntry = new TemperatureEntry();
temperatrueEntry.setRowIndex(key);
temperatrueEntry.setStatusDesc(value);
this.temperatureVecotor.add(temperatrueEntry);
}
// try {
for (int i = 0; i < temperatureVecotor.size(); i++) {
TemperatureEntry temperatureEntry = (TemperatureEntry) temperatureVecotor.elementAt(i);
String rowIndex = temperatureEntry.getRowIndex();
//System.out.println("rowIndex: " + rowIndex);
Vector oidsVector = getOtherOids(rowIndex, ATTRIBCOUNT);
Vector resultVector = null;
try {
resultVector = snmpGet.getPDU(oidsVector);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (resultVector != null) {
for (int j = 0; j < resultVector.size(); j++) {
VariableBinding vb = (VariableBinding) resultVector.get(j);
String oid = vb.getOid().toString();
String var = vb.getVariable().toString();
System.out.println(oid + " = " + var);
if (oid.startsWith("1.3.6.1.4.1.9.9.13.1.3.1.1")) {
temperatureEntry.setRowIndex(rowIndex);
} else if(oid.startsWith("1.3.6.1.4.1.9.9.13.1.3.1.2")){
temperatureEntry.setStatusDesc(var);
}else if(oid.startsWith("1.3.6.1.4.1.9.9.13.1.3.1.3")){
temperatureEntry.setStatusValue(var);
}else if(oid.startsWith("1.3.6.1.4.1.9.9.13.1.3.1.4")){
temperatureEntry.setThreshold(var);
}else if(oid.startsWith("1.3.6.1.4.1.9.9.13.1.3.1.5")){
temperatureEntry.setLastShutdown(var);
}else if(oid.startsWith("1.3.6.1.4.1.9.9.13.1.3.1.6")){
temperatureEntry.setState(var);
}
}
}
}
snmpGet.release();
System.out.println("[temperature : " + IP + " temperature采集完毕]");
}
private Vector getOtherOids(String rowIndex, int attribCount) {
Vector vector = new Vector();
for (int i = 2; i <= attribCount; i++) {
String oid = releaseRootOidLast(ROOT_OID, rowIndex, i);
//System.out.println("rowIndex change oid: " + oid);
vector.add(oid);
}
return vector;
}
private String releaseRootOidLast(String rootOid, String rowIndex, int int_i) {
String result = "";
String rowIndexLast = rowIndex.substring(rootOid.length(), rowIndex
.length());
String rootOidStart = rootOid.substring(0, rootOid.length() - 1);
result = rootOidStart + int_i + rowIndexLast;
return result;
}
}