snmp初识小结

百度百科

SNMP 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,它是一种应用层协议。 SNMP 使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告)网络管理系统获知网络出现问题。

开发背景

提供服务的系统(L),需要向使用方(C)上报“软件存活”、“数据库连接”、“任务执行异常”等报警信息。选择使用snmp(简单网络管理协议)来实现这个需求,使用java语言开发,第三方包snmp4j.jar包。

开发步骤

  1. 封装一个snmp上报的工具类,demo代码如下:
package com.dayang.leovideo.utils.snmp;

import org.snmp4j.*;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.*;
import org.snmp4j.transport.DefaultUdpTransportMapping;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class SnmpUtil {

	private Snmp snmp = null;
	private Address targetAddress = null;
	private int snmpVersion;
	
	public void initComm(String ip, Integer port,int version) throws IOException {
	snmpVersion = version;
//		targetAddress = GenericAddress.parse("udp:127.0.0.1/163");
		targetAddress = GenericAddress.parse("udp:"+ip+"/"+port);
		TransportMapping transport = new DefaultUdpTransportMapping();
		snmp = new Snmp(transport);
		transport.listen();
	}
	
	public void sendPDU(List<VariableBinding> variableBindingList, String communityName) throws IOException {
		CommunityTarget target = new CommunityTarget();
		target.setCommunity(new OctetString(communityName));
		target.setAddress(targetAddress);
		
		target.setRetries(2);
		
		target.setTimeout(1000 * 5);
		
		target.setVersion(SnmpConstants.version2c);
		
		PDU pdu;
		if(snmpVersion == 2){
		//snmp版本1
			pdu = new PDUv1();
			pdu.setType(PDU.V1TRAP);
		}else{
		//snmp版本2
			pdu = new PDU();
			pdu.setType(PDU.TRAP);
		}
		
		for(VariableBinding variableBinding : variableBindingList){
			pdu.add(variableBinding);
		}
		snmp.send(pdu, target);
	}
	
	public static void main(String[] args) {
		try {
			SnmpUtil util = new SnmpUtil();
			util.initComm("192.168.3.261", 163,1);
			List variableBindingList = new ArrayList();
			variableBindingList.add(new VariableBinding(new OID("1.3534.16.1.6.2"),new OctetString("snmp send Message")));
			util.sendPDU(variableBindingList,"BaiBai");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

  1. 安装snmp接收工具:
    安装了两个工具(iReasoning MIB browser setup.exe ; MG-SOFT+MIB+Browser+v10b)。
    安装了IReasoning,在菜单栏找到trap receiver
    snmp初识小结_第1张图片
    启动后可以看到以下展示窗口(如果端口冲突,可以在设置中修改)
    snmp初识小结_第2张图片
  2. 运行代码,查看接收的信息:
    运行demo代码(红框中参数为trap receiver的ip和端口,snmp的版本1/2)
    snmp初识小结_第3张图片
    snmp初识小结_第4张图片

你可能感兴趣的:(网络,java)