[SNMP4J] SNMP Agent isn't Emulating SNMP Device
. .
nfn_nln at hotmail.com
Fri May 13 21:04:29 CEST 2005
I am trying to emulate an SNMP enabled UPS to fake-out another device.
When I walk the actual UPS I get (among other things), but what I really
care about is the things with *'s.:
OID: 1.3.6.1.2.1.33.1.2.1.0 type: snmp.SNMPInteger value: 2
OID: 1.3.6.1.2.1.33.1.2.2.0 type: snmp.SNMPInteger value: 0
OID: 1.3.6.1.2.1.33.1.2.3.0 type: snmp.SNMPInteger value: 0
OID: 1.3.6.1.2.1.33.1.2.4.0 type: snmp.SNMPInteger value: 100 *
OID: 1.3.6.1.2.1.33.1.2.5.0 type: snmp.SNMPInteger value: 1118
OID: 1.3.6.1.2.1.33.1.2.6.0 type: snmp.SNMPInteger value: 0
OID: 1.3.6.1.2.1.33.1.2.7.0 type: snmp.SNMPInteger value: 22
AND
OID: 1.3.6.1.2.1.33.1.3.3.1.1.1 type: snmp.SNMPInteger value: 1
OID: 1.3.6.1.2.1.33.1.3.3.1.2.1 type: snmp.SNMPInteger value: 600
OID: 1.3.6.1.2.1.33.1.3.3.1.3.1 type: snmp.SNMPInteger value: 206 *
OID: 1.3.6.1.2.1.33.1.3.3.1.4.1 type: snmp.SNMPInteger value: 0
OID: 1.3.6.1.2.1.33.1.3.3.1.5.1 type: snmp.SNMPInteger value: 0
When I do a simple getOID, I get:
OID: 1.3.6.1.2.1.33.1.2.4.0 type: snmp.SNMPInteger value: 100
AND
OID: 1.3.6.1.2.1.33.1.3.3.1.3.1 type: snmp.SNMPInteger value: 206
-------------------------------------------------------------------
Now for my virtual UPS, I implemented the following:
private static DefaultMOTable createStaticUpsChargeTable() {
MOTableSubIndex[] subIndexes =
new MOTableSubIndex[] { new
MOTableSubIndex(SMIConstants.SYNTAX_INTEGER) };
MOTableIndex indexDef = new MOTableIndex(subIndexes, false);
MOColumn[] columns = new MOColumn[7];
int c = 0;
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
DefaultMOTable upsTable =
new DefaultMOTable(new OID("1.3.6.1.2.1.33.1.2"), indexDef,
columns);
MOMutableTableModel model = (MOMutableTableModel) upsTable.getModel();
Variable[] rowValues1 = new Variable[] {
new Integer32(2),
new Integer32(0),
new Integer32(0),
upsCharge,
new Integer32(1118),
new Integer32(0),
new Integer32(25)
};
model.addRow(new DefaultMOMutableRow2PC(new OID("0"), rowValues1));
return upsTable;
}
private static DefaultMOTable createStaticUpsVoltageTable() {
MOTableSubIndex[] subIndexes =
new MOTableSubIndex[] { new
MOTableSubIndex(SMIConstants.SYNTAX_INTEGER) };
MOTableIndex indexDef = new MOTableIndex(subIndexes, false);
MOColumn[] columns = new MOColumn[5];
int c = 0;
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
columns[c++] =
new MOColumn(c, SMIConstants.SYNTAX_INTEGER, null);
DefaultMOTable upsTable =
new DefaultMOTable(new OID("1.3.6.1.2.1.33.1.3.3.1.3"), indexDef,
columns);
MOMutableTableModel model = (MOMutableTableModel) upsTable.getModel();
Variable[] rowValues1 = new Variable[] {
new Integer32(1),
new Integer32(599),
upsVoltage,
new Integer32(0),
new Integer32(0)
};
model.addRow(new DefaultMOMutableRow2PC(new OID("1"), rowValues1));
return upsTable;
}
When I walk my virtual UPS I get:
OID: 1.3.6.1.2.1.33.1.2.1.0 type: snmp.SNMPInteger value: 2
OID: 1.3.6.1.2.1.33.1.2.2.0 type: snmp.SNMPInteger value: 0
OID: 1.3.6.1.2.1.33.1.2.3.0 type: snmp.SNMPInteger value: 0
OID: 1.3.6.1.2.1.33.1.2.4.0 type: snmp.SNMPInteger value: 100
OID: 1.3.6.1.2.1.33.1.2.5.0 type: snmp.SNMPInteger value: 1118
OID: 1.3.6.1.2.1.33.1.2.6.0 type: snmp.SNMPInteger value: 0
OID: 1.3.6.1.2.1.33.1.2.7.0 type: snmp.SNMPInteger value: 25
AND
OID: 1.3.6.1.2.1.33.1.3.3.1.3.1.1 type: snmp.SNMPInteger value: 1
OID: 1.3.6.1.2.1.33.1.3.3.1.3.2.1 type: snmp.SNMPInteger value: 599
OID: 1.3.6.1.2.1.33.1.3.3.1.3.3.1 type: snmp.SNMPInteger value: 208
OID: 1.3.6.1.2.1.33.1.3.3.1.3.4.1 type: snmp.SNMPInteger value: 0
OID: 1.3.6.1.2.1.33.1.3.3.1.3.5.1 type: snmp.SNMPInteger value: 0
This *looks* correct until I try to get OID's:
Exception during retrieval: snmp.SNMPGetException: OID
1.3.6.1.2.1.33.1.2.4.0 not available for retrieval
AND
OID: 1.3.6.1.2.1.33.1.3.3.1.3.1 type: snmp.SNMPNull value: Null
-------------------------------------------------------------------
1) How can I make my SNMP4J Agent better emulate the actual SNMP device?
-------------------------------------------------------------------
2) In addition, the walk of the actual UPS yielded
"1.3.6.1.2.1.33.1.3.3.1.3.1", but I KNOW that the actual OID being querried
is actually "1.3.6.1.2.1.33.1.3.3.1.3".
More information about the SNMP4J
mailing list