如何在snmp4j中向MIB表添加行

时间:2014-02-25 13:07:03

标签: snmp snmp4j

我正在编写一个程序,用于从本地路由器的白名单读取和写入MAC地址。

我已经设法读取了这个所谓的“wlanACLTable”的当前表内容,但是我无法使用SNMP在该表中添加另一行。

我搜索了一些示例,但所有这些都是标量值。

我想联系的设备是路由器,来自Teldat的W2002

1 个答案:

答案 0 :(得分:0)

要添加行,您需要在表中的新行中写入数据。 要使用的OID是表OID +列+ IP + IfIndex(您要配置的网络ID)+行

EG:1.3.6.1.4.1.272.4.46.8.1 +“。1”+“。255.555.255.255.255.255”+“。200000”+“。1337”

表: 第1列:MAC(格式:6号0-255) 第2列:IfIndex(整数 第3列:状态行(启用1,禁用2,删除3) 将其写入单个PDU,就像

一样
pdu.addAll(new VariableBinding[]{new VariableBinding(new OID(Table_OID + ".1"+"."+stringMac +"."+IfIndex+"." + freeRow),mac),
                                 new VariableBinding(new OID(Table_OID + ".2"+"."+stringMac +"."+IfIndex+"." + freeRow),new Integer32(IfIndex)),
                                 new VariableBinding(new OID(Table_OID + ".3"+"."+stringMac +"."+IfIndex+"." + freeRow),new Integer32(1))});

最后,要写入数据:使用低级别设置请求发送它们,在本例中为SNMP V3:

private Snmp snmp;

    public boolean executeSetRequest(String AccessName, String AccessPassword, ScopedPDU pdu) throws IOException {

            snmp.getUSM().addUser(new OctetString(AccessName), new UsmUser(new OctetString(AccessName), AuthMD5.ID, new OctetString(AccessPassword), PrivDES.ID, new OctetString(AccessPassword)));

            pdu.setType(ScopedPDU.SET);
            ResponseEvent response = snmp.send(pdu, getUserTarget(AccessName));

            if (response == null)
                throw new RuntimeException("SET timed out");

            return true;
        }