Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18979
  • 博文数量: 16
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-04 10:47
文章分类
文章存档

2012年(16)

我的朋友
最近访客

分类:

2012-03-04 10:51:35

关于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"));
阅读(205) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Snmp4j编程简介之二:PDU

给主人留下些什么吧!~~