1

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

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

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

我要联系的设备是路由器,一台 Teldat 的 W2002

4

1 回答 1

0

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

例如:1.3.6.1.4.1.272.4.46.8.1 +“.1”+“.255.255.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))});

最后,写入数据:使用低级别的 Set 请求发送它们,在本例中为 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;
        }
于 2014-04-15T08:05:14.713 回答