2014-02-25 1 views
0

로컬 라우터의 화이트리스트에서 MAC 주소를 읽거나 쓰는 프로그램을 작성하고 있습니다.snmp4j의 MIB 테이블에 행을 추가하는 방법

소위 "wlanACLTable"이라는 현재 테이블 내용을 읽었지만 SNMP를 사용하여이 테이블에 다른 행을 추가 할 수 없습니다.

예제를 검색했지만 모두 스칼라 값이었습니다.

내가 연락 할 장치

는 라우터, 행을 추가하려면 Teldat

답변

0

에서 W2002, 당신은 테이블에서 새 행에 데이터를 작성해야합니다. 사용할 OID는 테이블 OID + 열 + IP + IfIndex (구성 할 네트워크 ID) + 행

EG : 1.3.6.1.4.1.272.4.46.8.1 + ".1 "+".255.255.255.255.255.255 "+"0.200000 "+"0.1337 "

테이블 : 열 1 : MAC (형식 : 6 개 번호 0-255) 컬럼 2의 ifIndex (정수 3 열 : 상태 행 마지막으로 단지

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))}); 

처럼 하나의 PDU에 쓰기 그것을 (장애인 2, 1을 사용, 3 삭제), 쓰기 데이터 : 낮은 수준의 설정 요청 (이 경우 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; 
     } 
관련 문제