没有合适的资源?快使用搜索试试~ 我知道了~
首页snmp4j中文版阅读文档
snmp4j中文版阅读文档

本人制作的翻译文档,经过大量的翻译与工作而实现的snmp4j中文阅读文档
资源详情
资源评论
资源推荐

1. snmp 是什么
SNMP 是英文"Simple Network Management Protocol"的缩写,中文意思
是"简单网络管理协议"。SNMP 是一种简单网络管理协议,它属于 TCP/IP 五层协议中的应用
层协议,用于网络管理的协议。SNMP 主要用于网络设备的管理。由于 SNMP 协议简单可靠 ,
受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。
SNMP 协议主要由两大部分构成:SNMP 管理站和 SNMP 代理。SNMP 管理站是一个
中心节点,负责收集维护各个 SNMP 元素的信息,并对这些信息进行处理,最后反馈给网络管
理员;而 SNMP 代理是运行在各个被管理的网络节点之上,负责统计该节点的各项信息,并且
负责与 SNMP 管理站交互,接收并执行管理站的命令,上传各种本地的网络信息。
SNMP 管理站和 SNMP 代理之间是松散耦合。他们之间的通信是通过 UDP 协议完成
的。一般情况下,SNMP 管理站通过 UDP 协议向 SNMP 代理发送各种命令,当 SNMP 代理收
到命令后,返回 SNMP 管理站需要的参数。但是当 SNMP 代理检测到网络元素异常的时候,也
可以主动向 SNMP 管理站发送消息,通告当前异常状况。
SNMP 的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定
义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备
进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效
率,简化网络管理员的工作。
SNMP 的工作方式:管理员需要向设备获取数据,所以 SNMP 提供了【读】操作;管
理员需要向设备执行设置操作,所以 SNMP 提供了【写】操作;设备需要在重要状况改变的时
候,向管理员通报事件的发生,所以 SNMP 提供了【Trap】操作。
2. snmp 应用哪些场景
利用 SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络
状态、修改网络设备配置、接收网络事件警告等。 SNMP 的基本思想:为不同种类的设备、
不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以
使用统一的网管面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于
不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。
3. snmp 能做什么
SNMP 为管理员提供了一个网管平台(NMS),又称为【管理站】,负责网管命令的发出、
数据存储、及数据分析。被监管的设备上运行一个 SNMP 代理(Agent)),代理实现设备与
管理站的 SNMP 通信。
网络管理员使用 SNMP 功能可以查询设备信息、修改设备的参数值、监控设备状态、自动
发现网络故障、生成报告等。

SNMP 协议之所以易于使用,这是因为它对外提供了三种用于控制 MIB 对象的基本操作命
令。它们是:Get、Set 和 Trap。
Get:管理站读取代理者处对象的值。它是 SNMP 协议中使用率最高的一个命令,因为该
命令是从网络设备中获得管理信息的基本方式。
Set:管理站设置代理者处对象的值。它是一个特权命令,因为可以通过它来改动设备的
配置或控制设备的运转状态。它可以设置设备的名称,关掉一个端口或清除一个地址解析
表中的项等。
Trap: 代理者主动向管理站通报重要事件。它的功能就是在网络管理系统没有明确要求的
前提下,由管理代理通知网络管理系统有一些特别的情况或问题 发生了。如果发生意外情
况,客户会向服务器的 162 端口发送一个消息,告知服务器指定的变量值发生了变化。通
常由服务器请求而获得的数据由服务器的 161 端口接收。Trap 消息可以用来通知管理站
线路的故障、连接的终端和恢复、认证失败等消息。管理站可相应的作出处理。
get-next-request 操作:从代理进程处提取紧跟当前参数值的下一个参数值。
get-response 操作:返回的一个或多个参数值。这个操作是由代理进程发出的。
4. snmp 示例 Demo
4.1、Get 操作命令:
4.1.1、获取远程计算机的名称
package me.gacl.snmp;
import java.io.IOException;
import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.ScopedPDU;
import org.snmp4j.Snmp;
import org.snmp4j.Target;
import org.snmp4j.TransportMapping;
import org.snmp4j.UserTarget;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.event.ResponseListener;
import org.snmp4j.mp.MPv3;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.security.AuthMD5;
import org.snmp4j.security.PrivDES;
import org.snmp4j.security.SecurityLevel;
import org.snmp4j.security.SecurityModels;
import org.snmp4j.security.SecurityProtocols;
import org.snmp4j.security.USM;
import org.snmp4j.security.UsmUser;
import org.snmp4j.smi.Address;

import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;
public class Snmp4jFirstDemo {
private Snmp snmp = null;
private int version ;
public Snmp4jFirstDemo(int version) {
try {
this.version = version;
TransportMapping transport = new
DefaultUdpTransportMapping();
snmp = new Snmp(transport);
if (version == SnmpConstants.version3) {
// 设置安全模式
USM usm = new USM(SecurityProtocols.getInstance(),new
OctetString(MPv3.createLocalEngineID()), 0);
SecurityModels.getInstance().addSecurityModel(usm);
}
// 开始监听消息
transport.listen();
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendMessage(Boolean syn, final Boolean bro, PDU pdu,
String addr)
throws IOException {
// 生成目标地址对象
Address targetAddress = GenericAddress.parse(addr);
Target target = null;
if (version == SnmpConstants.version3) {
// 添加用户
snmp.getUSM().addUser(new OctetString("MD5DES"),new
UsmUser(new OctetString("MD5DES"), AuthMD5.ID,new
OctetString("MD5DESUserAuthPassword"),PrivDES.ID, new
OctetString("MD5DESUserPrivPassword")));
target = new UserTarget();
// 设置安全级别

((UserTarget)
target).setSecurityLevel(SecurityLevel.AUTH_PRIV);
((UserTarget) target).setSecurityName(new
OctetString("MD5DES"));
target.setVersion(SnmpConstants.version3);
} else {
target = new CommunityTarget();
if (version == SnmpConstants.version1) {
target.setVersion(SnmpConstants.version1);
((CommunityTarget) target).setCommunity(new
OctetString("public"));
} else {
target.setVersion(SnmpConstants.version2c);
((CommunityTarget) target).setCommunity(new
OctetString("public"));
}
}
// 目标对象相关设置
target.setAddress(targetAddress);
target.setRetries(5);
target.setTimeout(1000);
if (!syn) {
// 发送报文 并且接受响应
ResponseEvent response = snmp.send(pdu, target);
// 处理响应
System.out.println("Synchronize(同步) message(消息)
from(来自) "
+ response.getPeerAddress() + "\r\n"+"request(发
送的请求):"
+ response.getRequest() + "\r\n"+"response(返回的
响应):"
+ response.getResponse());
/**
* 输出结果:
* Synchronize(同步) message(消息) from(来自)
10.20.61.120/161
request(发送的请求):GET[requestID=680783532,
errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.1.5.0 = Null]]
response(返回的响应):RESPONSE[requestID=680783532,
errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.1.5.0 =
IE11Win7]]
剩余16页未读,继续阅读












安全验证
文档复制为VIP权益,开通VIP直接复制

评论1