我正在编写一个程序,用于从本地路由器的白名单读取和写入MAC地址。
我已经设法读取了这个所谓的“wlanACLTable”的当前表内容,但是我无法使用SNMP在该表中添加另一行。
我搜索了一些示例,但所有这些都是标量值。
我想联系的设备是路由器,来自Teldat的W2002
答案 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;
}