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. Help Me Escape

    题目: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4808 题意: 师傅被妖怪抓走了.有n个妖怪,每个妖怪有一个固定的战斗力 ...

  2. neo4j 一些常用的CQL

    创建节点.关系 创建节点(小明):create (n:people{name:’小明’,age:’18’,sex:’男’}) return n; 创建节点(小红): create (n:people{ ...

  3. Django-视图函数/模板渲染/过滤器

    一.Django的视图函数 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个 ...

  4. Django-批量更新

    1.表结构 class Student(models.Model): """ 学生表(已报名) """ customer = models. ...

  5. 【零基础】一文读懂CPU(从二极管到超大规模集成电路)

    一.前言 我们都知道芯片,也知道芯片技术在21世纪是最重要的技术之一,但很少有人能知道芯片技术的一些细节,如芯片是如何构造的.为什么它可以运行程序.芯片又是如何被设计制造出来的等等.本文就尝试从最底层 ...

  6. 搬运 centos7.2 apache 绑定二级目录 访问依然是apache页面

    <VirtualHost *:80>ServerName xx.comDocumentRoot /var/www/html/xx</VirtualHost>

  7. chattr +i 锁定文件

    reboot machine, 查看DNS服务器配置文件\etc\resolv.conf, 里面的内容变回原来的样子. 原因是resolv.conf文件被系统程序自动维护.为了防止该文件被跟改,可以为 ...

  8. Flutter移动电商实战 --(11)首页_屏幕适配方案和制作

    1.flutter_ScreenUtil插件简介 flutter_ScreenUtil屏幕适配方案,让你的UI在不同尺寸的屏幕上都能显示合理的布局. 插件会让你先设置一个UI稿的尺寸,他会根据这个尺寸 ...

  9. android data binding jetpack VIIII 第一坑

    <LinearLayout android:id="@+id/ll_item_home_page_pics" android:layout_width="wrap_ ...

  10. [面试] Java高级软件工程师面试考纲(转)

    如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构.算法.网络.操作系统等知识.因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对 ...