snmp协议
简单网络管理协议,专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,属于应用层协议, 大部分摄像头支持snmp管理协议的1,2,3版本,本身管理也是使用cs架构,如下图所示:
snmpwalk -v 2c -c public 192.168.0.55 1 图中可以看到192.168.0.55 是hik 海康摄像头,支持h264和h265
使用snmpwalk 获取 192.168.0.129 的 cpu利用率 snmpwalk -v 2c -c public 192.168.0.129 .1.3.6.1.2.1.25.3.3.1.2 可以看到 本身我的机器有16核心,每一个核心都有自己的cpu利用率
snmpwalk -v 2c -c public 192.168.0.129 .1.3.6.1.2.1.25.2.2.0 可以看到192.168.0.129 有16G 内存
package com.test;
import org.snmp4j.*;
import org.snmp4j.mp.SnmpConstants;
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;
import org.snmp4j.util.DefaultPDUFactory;
import org.snmp4j.util.TableEvent;
import org.snmp4j.util.TableUtils;
import java.io.IOException;
import java.util.List;
public class SnmpDemo2 {
public static void main(String[] args) {
creatSnmp();
}
public static void creatSnmp() {
TransportMapping transport = null;
Snmp snmp = null;
CommunityTarget target = null;
try {
transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);//创建snmp
snmp.listen();//监听消息
target = new CommunityTarget();
target.setCommunity(new OctetString("public"));//社区名称
target.setRetries(3);//连接次数
target.setAddress(GenericAddress.parse("udp:172.18.12.96/161"));//监控的主机
target.setTimeout(8000);//
target.setVersion(SnmpConstants.version2c);
String memory = collectMemory(snmp, target);
System.out.println("内存使用率为:" + memory);
String cpu = collectCPU(snmp, target);
System.out.println("CPU利用率为:" + cpu);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (transport != null)
transport.close();
if (snmp != null)
snmp.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//获取内存相关信息
public static String collectMemory(Snmp snmp, CommunityTarget target) {
String memory = null;
String[] oids = {"1.3.6.1.2.1.25.2.3.1.2", //type 存储单元类型
"1.3.6.1.2.1.25.2.3.1.3", //descr
"1.3.6.1.2.1.25.2.3.1.4", //unit 存储单元大小
"1.3.6.1.2.1.25.2.3.1.5", //size 总存储单元数
"1.3.6.1.2.1.25.2.3.1.6"}; //used 使用存储单元数;
String PHYSICAL_MEMORY_OID = "1.3.6.1.2.1.25.2.1.2";//物理存储
try {
TableUtils tableUtils = new TableUtils(snmp, new DefaultPDUFactory(PDU.GETBULK));
OID[] columns = new OID[oids.length];
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?