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
    在这里插入图片描述
    启动后可以看到以下展示窗口(如果端口冲突,可以在设置中修改)
    启动后可以看到
  2. 运行代码,查看接收的信息:
    运行demo代码(红框中参数为trap receiver的ip和端口,snmp的版本1/2)
    ip即trap receiver所在服务的ip,端口可设置,版本1/2都行
    snmp版本为v2是,详情区是空白的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值