作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 Java 实现 SNMP 代理。我使用 snmp4j 库 ( http://www.snmp4j.org/ )。目前,我的代理在 localhost/4700 上工作。由于以下请求,我尝试发送 snmpget 请求:
snmpget -v2c -c public localhost:4700 1.3.6.1.4.1.1.99.5.4.1.3.1.1
但我只得到类似“此 OID 当前不存在此类实例”之类的信息这是我的问题:我不知道如何创建一个。我尝试向我的 MOTable 添加行,但它似乎不起作用。
这是我的类(class)实现 MOGRoup 的总结
public class MyMIB
//--AgentGen BEGIN=_EXTENDS
//--AgentGen END
implements MOGroup
//--AgentGen BEGIN=_IMPLEMENTS
//--AgentGen END
{
.
.
.
public static final OID oidTableEntry =
new OID(new int[] { 1,3,6,1,4,1,1,99,5,4,1,3,1 });
.
.
.
private void createTableEntry(MOFactory moFactory) {
// Index definition
.
.
.
// Table model
tableEntryModel =
moFactory.createTableModel(oidTableEntry,
tableEntryIndex,
tableEntryColumns);
((MOMutableTableModel)tableEntryModel).setRowFactory(
new TableEntryRowFactory());
tableEntry =
moFactory.createTable(oidTableEntry,
tableEntryIndex,
tableEntryColumns,
tableEntryModel);
//Adding rows
ArrayList<Integer> oidMon1List= new ArrayList<Integer>();
oidRow1List = this.getListFromArray(oidTableEntry.getValue());
oidRow1List.add(1);
ArrayList<Integer> oidMon2List= new ArrayList<Integer>();
oidRow2List = this.getListFromArray(oidTableEntry.getValue());
oidRow2List.add(2);
DefaultMOMutableTableModel model =
(DefaultMOMutableTableModel)tableEntry.getModel();
synchronized(model){
model.addRow(
model.createRow(
new OID(getArrayFromList(oidRow1List)),
new Variable[]{
new Integer32(123)
}));
model.addRow(
model.createRow(
new OID(getArrayFromList(oidRow2List)),
new Variable[]{
new Integer32(456)
}));
}
}
但是下面的请求仍然不起作用。
snmpget -v2c -c public localhost:4700 1.3.6.1.4.1.1.99.5.4.1.3.1.1
snmpget -v2c -c public localhost:4700 1.3.6.1.4.1.1.99.5.4.1.3.1.1.0
snmpget -v2c -c public localhost:4700 1.3.6.1.4.1.1.99.5.4.1.3.1.1.1
我一定不明白如何正确地创建行。你能解释一下我应该怎么做吗?
非常感谢!
稍微精确一点:我将这些行添加到我的程序中:
System.out.println("Get row count: " +tableEntryModel.getRowCount());
//first row
System.out.println("TEST1: " +model.getRow(new OID(new int[] {1,3,6,1,4,1,1,99,5,4,1,3,1,1})).getValue(0));
System.out.println("TEST2: " +tableEntry.getValue(new OID(new int[] {1,3,6,1,4,1,1,99,5,4,1,3,1,1,0})));
第一个返回:2(如预期)
第二个返回:123(符合预期)
第三个返回:null...这里,我不明白为什么!
最佳答案
我会说,代码和请求不匹配。我猜是代码的问题,因为在 SNMP4J-Agent 中,表单元格的实例 OID 由
<tableEntryOID>.<columnSubID>.<rowIndexOID>
因此,如果您的表对象具有 OID 1.3.6.1.4.1.1.99.5.4.1.3.1 并且您希望第一列中的第一个实例具有 ID 1,那么您必须创建/添加行:
model.addRow(
model.createRow(
new OID(1), new Variable[]{ new Integer32(123) }));
然后可以用
检索这个单元格snmpget -v2c -c public localhost:4700 1.3.6.1.4.1.1.99.5.4.1.3.1.1.1
关于java - Java 中的 SNMP 代理 : How adding new rows in MOTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12193882/
我是一名优秀的程序员,十分优秀!