作者: ecsun 鏈接:http://papa.javaeye.com/blog/220544 發表時間: 2008年07月28日
聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!
關于Snmp4j包,最重要三個概念,也是三個類:Snmp、Target、PDU。
Target,表示被管理的設備。對于一個被管理的設備,我們關注它的Address,它使用的協議版本version,訪問它的用戶名和密碼、以及對這個設備我們設置跟它打交道的一些策略,比如超時時間、重傳次數等。所以有如下方法:
1)獲取或者設置ip地址
void setAddress(Address address)
Address getAddress()
2)設置或者獲取版本號(支持V1,V2c,V3)
void setVersion(int ver)
int getVersion()
3)超時時間 ( 單位:milliseconds )
void setTimeout(long out)
long getTimeout()
4)重傳次數
void setRetries(int retries)
int getRetries()
5)最大PDU大小值
void setMaxSizeRequestPDU(int max)
int getMaxSizeRequestPDU()
上面這些對于Snmp三個版本都是相同的,不同的只是在于安全方面,具體來說,Snmpv1,v2c采用共同體(community)方式,安全性很差;SnmpV3采用基于用戶的安全(USM)方式,安全性能得到很大提高。
(1) 對于Snmpv1,v2c,使用Target派生出一個子類CommunityTarget,增加了對Community的方法:
void setCommunity(OctetString community)
OctetString getCommunity()
(2)對于SnmpV3,使用其子類UserTarget,增加了一些有關USM安全方面的設置,比如采用的安全模型、安全級別、訪問該設備的用戶名以及權威引擎ID(authoritative engine ID):
i)安全級別(支持三種安全級別)
void setSecurityLevel(int level)
int getSecurityLevel()
ii)訪問用戶名(該訪問用戶名稱必須在設置USM的時候添加其相應的UsmUser)
void setSecurityName(OctetString name)
OctetString getSecurityName()
iii)安全模型(支持三種安全模型)
void setSecurityModel(int model)
int getSecurityModel()
V)權威引擎ID(authoritative engine ID)
void setAuthoritativeEngineID(byte[] id)
byte[] getAuthoritativeEngineID()
對于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 人發表留言,猛擊->>這里<<-參與討論
JavaEye推薦