我正在尝试用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中添加行,但似乎不起作用。
下面是我实现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。。。这里,我不明白为什么!
好吧,我找到了问题所在。实际上,我的代码工作正常,只是我的请求不正确。
| oidColumn 1.3.6.1.4.1.1.99.5.4.1.3.1.1
oidRow1 1.3.6.1.4.1.1.99.5.4.1.3.1.1 | oidColumn.oidRow1
oidRow2 1.3.6.1.4.1.1.99.5.4.1.3.1.2 | oidColumn.oidRow2
所以如果我想得到Row1的第一个值,我必须提出这个请求:
snmpget -v2c -c public localhost:4700 1.3.6.1.4.1.1.99.5.4.1.3.1.1.1.3.6.1.4.1.1.99.5.4.1.3.1.1
我想说,代码和请求不匹配。我想代码就是问题所在,因为在SNMP4J代理中,表单元格的实例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系统属性中引入具有相应值的新键。 问题答案: 无论是或使用国旗当您启动JVM
本文向大家介绍如何在Java中处理Selenium中的代理?,包括了如何在Java中处理Selenium中的代理?的使用技巧和注意事项,需要的朋友参考一下 我们可以借助PROXY类在Java中使用Selenium处理代理。
问题内容: 假设我有一个清单,例如: 在遍历此列表时,我想在列表末尾添加一个元素。但是我不想遍历新添加的元素,也就是我想遍历列表的初始大小。 有人可以建议我该怎么做吗? 问题答案: 您不能为此使用foreach语句。foreach在内部使用迭代器: 此类的迭代器和listIterator方法返回的迭代器是快速失败的:如果在创建迭代器之后的任何时间以任何方式对列表进行结构修改,则除了通过迭代器自己的
我对任何逻辑都是新手,我有一个问题我无法解决... 我把“布局类型”和“网络类型”设为“随机”,并勾选了“启动时申请”的复选框……一开始,我就有了一个不错的社交网络 然而代理的诞生和死亡...问题是,当我添加代理时,新创建的代理没有连接!所以我,当所有最初的特工都死了,我发现我自己有特工,但没有网络! 我该怎么办?添加新代理时,我希望它与其他代理连接:s 谢谢!!!
我有一个使用Indy组件进行TCP通信的c应用程序。现在我需要实现SNMP代理(?)只是为了通过SNMP响应有关应用程序状态的请求。我决定也使用Indy组件来完成这项任务。也许有一些标准的方法来实现这个? SNMP组件可以很好地获取一些值。但我找不到如何通过snmp从应用程序返回值的示例。 根据Remy Lebeau的建议,我已经开始实施SendTrap。 但当我运行应用程序时,我的系统中并没有u
问题内容: 我正在尝试使用PHP将新列添加到我的MYSQL表中。我不确定如何更改表以创建新列。在我的评估表中,我有: 假设我有一个带有文本框的页面,然后输入文本框并按一个按钮,则表将更新为: 我的代码: 问题答案: 您的桌子: 你也可以