作者: ecsun  鏈接:http://papa.javaeye.com/blog/220544  發(fā)表時(shí)間: 2008年07月28日

聲明:本文系JavaEye網(wǎng)站發(fā)布的原創(chuàng)博客文章,未經(jīng)作者書面許可,嚴(yán)禁任何網(wǎng)站轉(zhuǎn)載本文,否則必將追究法律責(zé)任!

關(guān)于Snmp4j包,最重要三個(gè)概念,也是三個(gè)類:Snmp、Target、PDU。
   
    Target,表示被管理的設(shè)備。對(duì)于一個(gè)被管理的設(shè)備,我們關(guān)注它的Address,它使用的協(xié)議版本version,訪問它的用戶名和密碼、以及對(duì)這個(gè)設(shè)備我們?cè)O(shè)置跟它打交道的一些策略,比如超時(shí)時(shí)間、重傳次數(shù)等。所以有如下方法:
    1)獲取或者設(shè)置ip地址
    void setAddress(Address address)  
    Address getAddress()
    2)設(shè)置或者獲取版本號(hào)(支持V1,V2c,V3)
    void setVersion(int ver)
    int   getVersion()
    3)超時(shí)時(shí)間 ( 單位:milliseconds )
    void   setTimeout(long out)
    long getTimeout()
    4)重傳次數(shù)
    void   setRetries(int retries)
    int   getRetries()
    5)最大PDU大小值
    void setMaxSizeRequestPDU(int max)
    int   getMaxSizeRequestPDU()

    上面這些對(duì)于Snmp三個(gè)版本都是相同的,不同的只是在于安全方面,具體來(lái)說,Snmpv1,v2c采用共同體(community)方式,安全性很差;SnmpV3采用基于用戶的安全(USM)方式,安全性能得到很大提高。
   (1) 對(duì)于Snmpv1,v2c,使用Target派生出一個(gè)子類CommunityTarget,增加了對(duì)Community的方法:
        void setCommunity(OctetString community)
        OctetString getCommunity()

    (2)對(duì)于SnmpV3,使用其子類UserTarget,增加了一些有關(guān)USM安全方面的設(shè)置,比如采用的安全模型、安全級(jí)別、訪問該設(shè)備的用戶名以及權(quán)威引擎ID(authoritative engine ID):
       i)安全級(jí)別(支持三種安全級(jí)別)
       void setSecurityLevel(int level)
       int   getSecurityLevel()
       ii)訪問用戶名(該訪問用戶名稱必須在設(shè)置USM的時(shí)候添加其相應(yīng)的UsmUser)
       void setSecurityName(OctetString name)
       OctetString   getSecurityName()
       iii)安全模型(支持三種安全模型)
       void setSecurityModel(int model)
       int   getSecurityModel()
       V)權(quán)威引擎ID(authoritative engine ID)
       void   setAuthoritativeEngineID(byte[] id)
       byte[] getAuthoritativeEngineID()
   
對(duì)于Target的代碼大致如下:(摘自Snmp4j的說明文檔)

Community Target
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
target.setVersion(SnmpConstants.version1);User Target
UserTarget target = new UserTarget();
target.setAddress(targetAddress);
target.setRetries(1);
// set timeout to 500 milliseconds -> 2*500ms = 1s total timeout
target.setTimeout(500);
target.setVersion(SnmpConstants.version3);
target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
target.setSecurityName(new OctetString("MD5DES"));

已有 0 人發(fā)表留言,猛擊->>這里<<-參與討論


JavaEye推薦