ローカル ルーターのホワイト リストとの間で MAC アドレスを読み書きするプログラムを作成しています。
このいわゆる「wlanACLTable」の現在のテーブル コンテンツを読み取ることができましたが、SNMP を使用してこのテーブルに別の行を追加することはできません。
例を検索しましたが、それらはすべてスカラー値用でした。
連絡したいデバイスはルーターで、Teldat の W2002 です
行を追加するには、テーブル内の新しい行にデータを書き込む必要があります。使用する OID は、テーブル 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 (形式: 0 ~ 255 の 6 つの数字) 列 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;
}