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


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