您当前的位置: 首页 > 

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

使用snmp协议获取和管理摄像头设备信息

qianbo_insist 发布时间:2022-08-22 14:48:43 ,浏览量:0

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

cpu获取

使用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 内存

java snmp4j
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             
关注
打赏
1663161521
查看更多评论
0.0641s