当前位置: 首页 > 知识库问答 >
问题:

SNMP4j代理snmp表

倪德业
2023-03-14

我已使用snmp4j api在SNMP代理上创建,但SNMP表注册存在问题

一旦我注册了表和表中的行。然后,如果我在表中设置值,所有行都会设置相同的值。我已经从JSON创建了snmp表

如果我设置了值,请在下表中

.1.3.6.1.4.1.1.201.6.2。它为下表中注册的所有行设置值。是否有人知道如何使用snmmpj代理正确注册和设置值。

{
        "tableName": "table1", 
        "tableId": ".1.3.6.1.4.1.1.201.6.1", 
        "columns": [
            {
                "columnName": "column1", 
                "columnOID": 1, 
                "dataType": 70, 
                "accessType": 1,
                "defaultValue":0
            }, 
            {
                "columnName": "column2", 
                "columnOID": 2, 
                "dataType": 70, 
                "accessType": 1,
                "defaultValue":0
            }, 
            {
                "columnName": "column3", 
                "columnOID": 3, 
                "dataType": 70, 
                "accessType": 1,
                "defaultValue":0
            },

        ]
    }



 public static MOTable<MOTableRow<Variable>, MOColumn<Variable>, MOTableModel<MOTableRow<Variable>>> createTableFromJSON(
        JSONObject data) {
    MOTable table = null;

    if (data != null) {
        MOTableSubIndex[] subIndex = new MOTableSubIndex[] { moFactory
                .createSubIndex(null, SMIConstants.SYNTAX_INTEGER, 1, 100) };
        MOTableIndex index = moFactory.createIndex(subIndex, false,
                new MOTableIndexValidator() {
                    public boolean isValidIndex(OID index) {
                        boolean isValidIndex = true;
                        return isValidIndex;
                    }
                });
        Object indexesObj = data.get("indexValues");
        if(indexesObj!=null){
            String indexes = data.getString("indexValues");
            String tableOID = data.getString("tableId");
            JSONArray columnArray = data.getJSONArray("columns");
            int columnSize = columnArray.size();
            MOColumn[] columns = new MOColumn[columnSize];
            Variable[] initialValues = new Variable[columnSize];
            for (int i = 0; i < columnSize; i++) {
                JSONObject columnObject = columnArray.getJSONObject(i);
                columns[i] = moFactory.createColumn(columnObject
                        .getInt("columnOID"), columnObject.getInt("dataType"),
                        moFactory.createAccess(columnObject
                                .getInt("accessType")));
                initialValues[i] = getVariable(columnObject.get("defaultValue"));

            }

            MOTableModel tableModel = moFactory.createTableModel(new OID(
                    tableOID), index, columns);

            table = moFactory.createTable(new OID(tableOID), index, columns,
                    tableModel);
            String[] indexArrString = indexes.split(";");
            for(String indexStr: indexArrString){
                MOTableRow<Variable> row = createRow(new Integer(indexStr.trim()), initialValues);
                table.addRow(row);
            }
        }
        }

    return table;

}

共有1个答案

贡建修
2023-03-14

首先,OID不以点开头(由ASN.1指定)。

其次,您似乎没有使用任何行索引数据。行由其索引标识。行索引是表格实例OID的实例标识符后缀:

<tableOID>.1.<rowIndex>

can由几个编码为OID的子索引值组成。

 类似资料:
  • 我是SNMP新手,谢谢你的支持......我有一个子代理的现有Perl脚本,在尝试运行它时出现了以下问题:代理似乎连接到“默认”snmpd deamon,该deamon被配置为主代理(“master agentx”行存在于snmpd.conf中)。此时,脚本将一些值分配给我的MIB中的对象。但是,当我然后在master-agent上执行snmpwalk或snmpget时,我得到(对于v1查询)“结

  • 我正在尝试使用snmp4j模拟SNMP代理。我正在向代理注册MOs。下面是代码段: 当启动代理时,我得到了DuplicateInstrationException。请指导我如何注册类。请提供方向。

  • 我正在尝试编写我的第一个snmp4j客户端。我有一个代理在192.168.60.105上运行。使用网络snmp,我可以查询OID并获得结果。使用smnp4j,snmp get的响应事件返回空响应和空错误。我想信息是超时了,但我不知道为什么。 我使用net-snmp得到一个结果 我尝试过使用更长的超时时间和更多的重试次数,返回时间也更长。这就是为什么我认为我要退出。我只是不明白为什么。我还预计,如果

  • 我在一家公司实习。我被要求找到一种方法,使用java在其中一个系统中实现snmp代理。我试图为java找到一个免费的MIB编译器,但失败了。因此,我尝试使用SNMP4J agentX库来实现这一点(因为他们明确表示需要主代理和子代理)。我以前从未使用过它,所以我很难实现它。库包中有一个示例主代理和子代理。我不明白如何修改它以包含我自己mib文件中的变量。或者,如果任何人有一个更简单的主代理或子代理

  • 我正在尝试创建一个SNMP4j代理,但发现很难正确理解该过程。我已经成功创建了一个可以使用snmpwalk从命令行查询的代理。我遇到的困难是理解如何更新存储在我实现的MIB中的值。 下面显示了我用于创建MIB的相关代码(我实现了主机资源MIB) 这似乎足以创建可运行的代理。我不明白的是,我应该如何更改MIB中存储的值(例如,如何更改HrSWRunStatus的值)。似乎有一些乱七八糟的方法,但它们

  • 我正在尝试使用SNMP4j代理在SNMP代理上注册一组MOs。 然后运行它: 此处的输出为: 我得到DuplicateEntertainment strationException的原因是否与地址结构或顺序有关? 每个对象都是一个组织。snmp4j。代理人mo.MOScalar具有唯一的八位字符串值。 相关:向snmp代理注册OID