SNMP4J編程最重要的三個類之Target

關於SNMP4J包,最重要的三個概念,也是三個類:Snmp、Target、PDU。

1、Target

    Target,表示被管理的設備。對於一個被管理的設備,我們關注它的Address它使用的協議版本version訪問它的用戶名和密碼,以及對這個設備我們設置跟它打交道的一些策略,比如超時時間、重傳次數等。所以有如下方法:

1)獲取或者設置IP地址

Address getAddress()

void setAddress(Address address)

2)獲取或者設置版本號(支持V1,V2c,V3)

int getVersion()

void setVersion(int ver)

3)獲取或者設置超時時間

long getTimeout()

void setTimeout(long out)

4)獲取或者設置重傳次數

int getRetries()

void setRetries(int retries)

5)獲取或者設置最大PDU大小值

int getMaxSizeRequestPDU()

void setMaxSizeRequestPDU(int max)

上面這些對於SNMP三個版本都是相同的,不同的是在於安全方面。具體來說,SNMPv1和SNMPv2c採用共同體(Community)方式,安全性很差;SNMPv3採用基於用戶的安全(USM)方式,安全性能得到很大提高。

(1)對於SNMPv1和SNMPv2c,使用Target派生出一個子類CommunityTarget,增加了對Community的方法:

OctetString getCommunity()

void setCommunity(OctetString community)

(2)對於SNMPv3,使用其子類UserTarget,增加了一些有關USM安全方面的設置,比如採用的安全模型、安全級別、訪問該設備的用戶名以及權威引擎ID(authoritative engine ID):

i)安全級別(支持三種安全級別)

int getSecurityLevel()

void setSecurityLevel(int level)

ii)訪問用戶名(該訪問用戶名稱必須在設置USM的時候添加其相應的UsmUser)

OctetString getSecurityName()

void setSecurityName(OctetString name)

iii)安全模型(支持三種安全模型)

int getSecurityModel()

void setSecurityModel(int model)

v)權威引擎ID(authoritative engine ID)

byte[] getAuthoritativeEngineID()

void setAuthoritativeEngineID(byte[] id)

對於Target的代碼大致如下:

		CommunityTarget target = new CommunityTarget();
		target.setCommunity(new OctetString("public"));
		target.setAddress(targetAddress);
		target.setVersion(SnmpConstants.version1)
		
		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"));


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章