window snmp服务开启及测试

转自:https://blog.csdn.net/qq_33314107/article/details/80031446

一 安装

二 开启服务

Linux下安装与配置snmp服务

https://blog.csdn.net/macrothunder/article/details/50394566

三 测试

3.1  MIB 浏览器测试

iReasoning MIB Browser下载地址:http://ireasoning.com/download.shtml

3.2  程序测试

maven导入依赖:

<!--snmp-->
<dependency>
<groupId>org.snmp4j</groupId>
<artifactId>snmp4j</artifactId>
<version>2.5.0</version>
</dependency>

oid列表:

参照:https://blog.csdn.net/qq_28657577/article/details/82834442

public enum IndicatorOIDName {
//网络接口信息描述 网络接口类型 接口发送和接收的最大IP数据报[BYTE] 接口当前带宽[bps] 接口的物理地址 接口当前操作状态[up|down]
TEST("test", "测试", ".1.3.6.1.2.1.2.2.1.2," +
".1.3.6.1.2.1.2.2.1.3," +
".1.3.6.1.2.1.2.2.1.4," +
".1.3.6.1.2.1.2.2.1.5" +
".1.3.6.1.2.1.2.2.1.6," +
".1.3.6.1.2.1.2.2.1.8"), CPURATE("cpuRate", "总cpu占用率", "1.3.6.1.2.1.25.3.3.1.2"), //y
DISK_USE_RATE("diskUseRate", "磁盘使用率", "1.3.6.1.2.1.25.2.3.1.5,1.3.6.1.2.1.25.2.3.1.6"), //y ,前-总,后-已使用
//1:Physical memory ;3:Virtual memory; 6:Memory buffers;7:Cached memory
PHY_MEM_USE_PERCENT("phyMemUsePercent", "物理内存利用率","1.3.6.1.2.1.25.2.3.1.3," +
"1.3.6.1.2.1.25.2.3.1.5," +
"1.3.6.1.2.1.25.2.3.1.6"),
UP_STREAM("upStream", "上行流量监控(专用)", ".1.3.6.1.2.1.2.2.1.16"),
DOWN_STREAM("downStream", "下行流量监控(专用)", ".1.3.6.1.2.1.2.2.1.10"),
STREAM_SUM("streamSum", "上下行流量总和", ".1.3.6.1.2.1.2.2.1.10,.1.3.6.1.2.1.2.2.1.16"),
//网络接口信息描述 网络接口类型
NETWORK_INTERFACE("networkInterface", "网络接口", ".1.3.6.1.2.1.2.2.1.2,.1.3.6.1.2.1.2.2.1.3"); private String name;
private String mes;
private String oid; IndicatorOIDName(String name, String mes, String oid) {
this.name = name;
this.mes = mes;
this.oid = oid;
} public static IndicatorOIDName getByName(String name) {
for (IndicatorOIDName IndicatorOIDName : IndicatorOIDName.values()) {
if (name.startsWith(IndicatorOIDName.getName())) {
return IndicatorOIDName;
}
}
throw new RuntimeException("不支持类型 IndicatorOIDName.name=" + name);
} public String getName() {
return name;
} public String getMes() {
return mes;
} public String getOid() {
return oid;
}
}
Snmp4Uitl .java 测试类
public class Snmp4Uitl {
private static final Logger log = LoggerFactory.getLogger(Snmp4Uitl.class); public static void main(String[] args) throws IOException {
//ord aPublic 1.3.6.1.2.1.25.3.3.1.2 10.253.46.140 10.243.141.114
List<ChildIndicatorVo> indicatorVos= getChildIndicatorList("10.243.141.114",IndicatorOIDName.NETWORK_INTERFACE);
System.out.println(JSON.toJSONString(indicatorVos));
}
/***
* @Date: @Auth:xinsen.liao @Desc(V1.06): 获取磁盘内存指标
*/
public static List<ChildIndicatorVo> getChildIndicatorList(String ip,IndicatorOIDName indicatorOIDName) throws IOException { List<ChildIndicatorVo> indicatorVoList=new ArrayList<>();
List<TableEvent> aPublic = getTable(ip, indicatorOIDName.getOid().split(","), "public");
// System.out.println(JSON.toJSONString(aPublic));
for (TableEvent event : aPublic) {
OID oid = event.getIndex();
Integer index = oid.get(0);
VariableBinding[] valueBinds = event.getColumns();
Variable value = event.getColumns()[0].getVariable();
if(value!=null){
ChildIndicatorVo vo=new ChildIndicatorVo();
switch (indicatorOIDName.getName()){
case "cpuRate":
case "upStream":
case "downStream":
case "streamSum":
vo.setIndex(index);
vo.setOid(indicatorOIDName.getOid());
indicatorVoList.add(vo);
break;
case "networkInterface":
case "diskUseRate":
if(value.toString().toUpperCase().indexOf("MEMORY")>=0){
continue;
}
if(value!=null)
vo.setField(value.toString());
vo.setIndex(index);
vo.setOid(indicatorOIDName.getOid());
indicatorVoList.add(vo);
break;
}
}
}
return indicatorVoList;
}
public static PDU send(String ip, String oid, String community) throws IOException {
TransportMapping<UdpAddress> transportMapping = new DefaultUdpTransportMapping();
Snmp snmp = new Snmp(transportMapping);
try {
snmp.listen();
ResponseEvent response = null;
PDU pdu = new PDU();
pdu.add(new VariableBinding(new OID(oid)));
pdu.setType(PDU.GET);
String address = ip + "/" + 161;
Address targetAddress = new UdpAddress(address);
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString(community)); // 改字符串是我们在上面配置的
target.setAddress(targetAddress);
target.setRetries(2);
target.setTimeout(3000);
target.setVersion(SnmpConstants.version2c);
response = snmp.get(pdu, target);
PDU result = response.getResponse();
if (result == null) {
throw new RuntimeException("连接失败" + address + " community:" + community);
}
return result;
} catch (Exception ex) {
throw ex;
} finally {
snmp.close();
}
} public static List<TableEvent> getTable(String ip, String[] oids, String community) throws IOException {
TransportMapping transport = null;
Snmp snmp = null;
CommunityTarget target;
try {
transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);//创建snmp
snmp.listen();//监听消息
target = new CommunityTarget();
target.setCommunity(new OctetString(community));
target.setRetries(2);
target.setAddress(GenericAddress.parse("udp:" + ip + "/161"));
target.setTimeout(8000);
target.setVersion(SnmpConstants.version2c);
TableUtils tableUtils = new TableUtils(snmp, new PDUFactory() {
@Override
public PDU createPDU(Target arg0) {
PDU request = new PDU();
request.setType(PDU.GET);
return request;
} @Override
public PDU createPDU(MessageProcessingModel messageProcessingModel) {
PDU request = new PDU();
request.setType(PDU.GET);
return request;
}
});
OID[] columns = new OID[oids.length];
for (int i = 0; i < oids.length; i++)
columns[i] = new OID(oids[i]);
List<TableEvent> list = tableUtils.getTable(target, columns, null, null);
return list;
} catch (Exception e) {
throw e;
} finally {
try {
if (transport != null)
transport.close();
if (snmp != null)
snmp.close();
} catch (IOException e) {
log.error("Snmp4Uitl[]getTable[]error", e);
}
}
}
}

windows下安装和配置SNMP的更多相关文章

  1. 网络基础 Windows下安装和配置net-snmp 代理

    Windows 下安装和配置net-snmp 代理[摘录] by:授客 QQ:1033553122   A.   安装  1.   安装前准备 ActivePerl-5.10.0.1004-MSWin ...

  2. PHP学习之-Mongodb在Windows下安装及配置

    Mongodb在Windows下安装及配置 1.下载 下载地址:http://www.mongodb.org/ 建议下载zip版本. 2.安装 下载windows版本安装就和普通的软件一样,直接下一步 ...

  3. windows下安装和配置redis

    1.windows下安装和配置redis 1.1 下载: 官网(linux下载地址):https://redis.io/ Windows系统下载地址:https://github.com/MSOpen ...

  4. windows下安装和配置多个版本的JDK

    https://jingyan.baidu.com/article/47a29f2474ba55c015239957.html 如何在windows下安装和配置多个版本的jdk,本文将带你在windo ...

  5. 基于svnserve的SVN服务器(windows下安装与配置)

    基于svnserve的SVN服务器(windows下安装与配置) 基于svnserve的SVN服务器(windows下安装与配置)关键字: svn 安装SVNserve 从http://subvers ...

  6. windows下安装和配置mongoDB

    上次在mac下安装和配置了mongodb,这次在windows下也尝试安装和配置mongodb. 1.首先下载mongodb压缩包,下载后解压到D盘或E盘.如下: 2.配置环境变量:桌面—计算机右键— ...

  7. windows下安装并配置mysql

    前言:前面三篇文章将django的环境搭建完后,还只能编写静态网页,如果要用到数据库编写动态网页,那么还需要数据库 本章讲解mysql5.6数据库的安装和配置,对于其他版本仅供参考,不一定试用!推荐使 ...

  8. 烂泥:Windows下安装与配置Nginx web服务器

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前几篇文章,我们使用nginx都是在linux环境下,今天由于工作的需要.需要在windows环境也使用nginx搭建web服务器. 下面记录下有关ng ...

  9. windows下安装,配置gcc编译器

    在Windows下使用gcc编译器: 1.首先介绍下MinGW MinGW是指仅仅用自由软件来生成纯粹的Win32可运行文件的编译环境,它是Minimalist GNU on Windows的略称. ...

随机推荐

  1. Chef and Problems(from Code-Chef FNCS) ( 回 滚 )

    题目: 题意:给定序列,求[l,r]区间内数字相同的数的最远距离. 链接:https://www.codechef.com/problems/QCHEF #include<bits/stdc++ ...

  2. Ubuntu 出现 Invalid operation update 或 Invalid operation upgrade的解决办法

    输入 sudo apt update && sudo apt full-upgrade

  3. C# Socket 编程 Sample

    使用Socket通信的服务器端编程,熟悉了服务器端和客户端的通信流程,实现了收发信息.文件传送以及震动功能 服务器端先创建Socket,然后将其和本地ip地址以及端口号连接,也就是使用Bind方法,然 ...

  4. C,线程池

    /* 线程池组成: 1.管理者线程:创建并管理线程,包括添加.删除.销毁线程,添加新任务 2.工作线程:线程池中的线程,执行管理者分配的任务 3.任务接口:任务要实现的接口,供工作线程调用 4.任务队 ...

  5. spark 常用函数介绍(python)

    以下是个人理解,一切以官网文档为准. http://spark.apache.org/docs/latest/api/python/pyspark.html 在开始之前,我先介绍一下,RDD是什么? ...

  6. Golang语言快速上手到综合实战高并发聊天室

    需要的联系我:QQ:1844912514 Go是Google开发的一种编译型,可并行化,并具有垃圾回收功能的编程语言.2015,Go迎来了全迸发的一年.时隔一年,回头再看,Go已跻身主流编程语言行列. ...

  7. Java-JPDA 概述

    JPDA:Java 平台调试架构(Java Platform Debugger Architecture) 它是 Java 虚拟机为调试和监控虚拟机专门提供的一套接口. 一.JPDA https:// ...

  8. Android-Glide使用

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Li_Qing_Xue/article/details/78919499 图片加载很是重要,我也对比过 ...

  9. OpenCL如何获取最小线程并行粒度

    由于OpenCL是为各类处理器设备而打造的开发标准的计算语言.因此跟CUDA不太一样的是,其对设备特征查询的项更上层,而没有提供一些更为底层的特征查询.比如,你用OpenCL的设备查询API只能获取最 ...

  10. powerdesigner使用遇到的一些问题

    1.数据库逆向生成er图时,连接数据库问题 由于powerdesigner版本是32位,可能就导致不兼容64位的机器,导致连接mysql失败: 解决方法:方法1.重新配置32位jdk 方法2.mysq ...