Windows snmp++获取本地主机信息

news2024/11/19 5:55:21

编译snmp++的包

调用snmp++.lib实现信息获取_哔哩哔哩_bilibili

代码:

#include <iostream>
#include <libsnmp.h>
#include <vector>
#include <fstream>
#include <string>
#include "snmp_pp/snmp_pp.h"
//#define _NO_LOGGING
#ifdef WIN32
#define strcasecmp _stricmp
#endif

#ifdef SNMP_PP_NAMESPACE
using namespace Snmp_pp;
#endif

using namespace std;
using namespace Snmp_pp;
typedef struct {
	string aa;
	string bb;
	string cc;
}CON;
vector<CON> readTxt(string path) {
	vector<CON> res;
	ifstream file(path);
	string line;
	CON a;
	getline(file, line);
	line = line.substr(line.find('=') + 1);
	a.aa = line;
	while (getline(file,line))
	{
		line= line.substr(line.find('=') + 1);
		a.bb = line;
		getline(file, line);
		line = line.substr(line.find('=') + 1);
		a.cc = line;
		res.push_back(a);
	}
	return res;
}
vector<string> getSnmpValue(vector<CON> a) {
	vector<string> res;
	int status;
	Snmp::socket_startup(); // Initialize the socket subsystem
	// Create an SNMP++ session
	Snmp snmp(status);
	if (status != SNMP_CLASS_SUCCESS)
	{
		cout << "SNMP++ Session creation failed." << endl;
		return vector<string>();
	}
	for (int i = 0; i < a.size(); i++)
	{
		// Set the target address
		UdpAddress targetAddress(a[i].bb.c_str());
		// Create the target using the target address and community string
		CTarget target(targetAddress);
		target.set_version(version2c); // Use SNMPv2c
		target.set_retry(3);           // Set the number of retries
		target.set_timeout(1000);      // Set the timeout (milliseconds)
		target.set_readcommunity(a[i].aa.c_str());
		// Create a PDU object for the SNMP GET request
		Pdu pdu;
		pdu.set_type(sNMP_PDU_GET);
		pdu += Vb(a[i].cc.c_str()); // Add the OID to retrieve
			// Send the SNMP GET request
		status = snmp.get(pdu, target);
		if (status == SNMP_CLASS_SUCCESS)
		{
			// Check the response PDU for errors
			if (pdu.get_error_status() == SNMP_ERROR_SUCCESS)
			{
				// Iterate through the received variable bindings
				for (int i = 0; i < pdu.get_vb_count(); i++)
				{
					Vb vb;
					pdu.get_vb(vb, i);
					std::string value = vb.get_printable_value();
					res.push_back(value);  // 将值添加到容器中
					//cout << "OID: " << vb.get_printable_oid() << endl;
					//cout << "Value: " << vb.get_printable_value() << endl;
				}
			}
			else
			{
				cout << "Error in response PDU: " << endl;
			}
		}
		else
		{
			cout << "SNMP++ GET request failed: " << snmp.error_msg(status) << endl;
		}
	}
	Snmp::socket_cleanup(); // Shut down the socket subsystem
	return res;
}
int main()
{
	string p = "D:\\ALearn\\snmp\\testSnmpJJ\\1.txt";
	vector<CON> a = readTxt(p);
	/*for (int i = 0; i < a.size(); i++)
	{
		cout << a[i].aa << endl;
		cout << a[i].bb << endl;
		cout << a[i].cc << endl;
	}*/
	vector<string> b = getSnmpValue(a);
	for (int i = 0; i < b.size(); i++)
	{
		cout <<"value===="<< b[i] << endl;
	}
	return 0;
}

配置文件:

 

运行截图:(一定要运行snmp服务)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1675619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高清SDI串行数字接口采集卡与传输编码器

随着科技的快速发展&#xff0c;我们正处于一个数字化、信息化的时代&#xff0c;各式各样的设备正成为人们工作和生活中必不可少的伙伴。今天&#xff0c;我要向大家介绍的是一款具有革命性意义的视频采集卡——LCC262。这款由灵卡技术团队精心打造的产品&#xff0c;集合了多…

在阿里云服务器上安装MySQL

目录 一、先卸载不需要的环境 1.关闭MySQL服务 2.查看安装包以及卸载安装包 3.依次卸载所有包 4. 获取mysql官⽅yum源 二、安装&#xff08;密钥过期解决方法&#xff09; 三、启动并进入 关于MySQL MySQL是一个广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&…

金三银四面试题(二十七):适配器模式知多少?

什么是适配器模式 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将一个类的接口转换为客户期望的另一个接口。通过适配器&#xff0c;原本不兼容的接口可以一起工作&#xff0c;从而提高系统的灵活性和可扩展性。 关键元素&…

开发测试必须知道的 10种 常见软件架构模式

你是否想知道企业大规模系统是如何设计的? 在软件开发开始之前&#xff0c;我们必须选择一个合适的架构&#xff0c;能提供所需的功能和质量特性。因此&#xff0c;在将架构应用到我们的设计之前&#xff0c;我们应该了解各种不同架构的特点。 01 什么是架构模式 根据维基百…

parallelsdesktop19密钥激活 PD19虚拟机完整图文安装教程

Parallels Desktop 19 &#xff08;简称 PD 19)是最新发布的 macOS 平台的 windows 虚拟机&#xff0c;本文是使用 Parallels Desktop 19 虚拟机安装 Windows 的详细图文破解安装教程。 一下载安装 Parallels Desktop 软件下载完成后打开&#xff0c;双击打开 安装.dmg Para…

【多模态】30、Monkey | 支持大尺寸图像输入的多任务多模态大模型

文章目录 一、背景二、方法2.1 Enhancing Input Resolution2.2 Multi-level Description Generation2.3 Multi-task Training 三、效果3.1 Image Caption3.2 General VQA3.3 Scene Text-centric VQA3.4 Document-oriented VQA3.5 消融实验3.6 可视化 论文&#xff1a;Monkey : …

【核弹】我的第一款IDEA插件

SuperHotSwap 插件名称叫做&#xff1a;SuperHotSwap&#xff08;超级热更新&#xff09; 开发初心&#xff1a;旨在做出一款最便捷的IDEA热更新插件&#xff0c;减少用户操作步骤&#xff0c;提供零配置的可视化操作更新。 为什么要写这个插件&#xff1a; 每次改一下Mappe…

android自定义view仿微信联系人列表

说明&#xff1a;最近碰到一个需求&#xff0c;弄一个类似国家或省份列表&#xff0c;样式参照微信联系人 文件列表&#xff1a; step1:主界面 加载列表数据~\app\src\main\java\com\example\iosdialogdemo\MainActivity.java step2:右侧列表数据排序~\app\src\com\example\io…

物联网应用开发--STM32与新大陆云平台通信(云平台控制开发板上蜂鸣器、LED)

实现目标 1、掌握云平台执行器的创建 2、熟悉STM32 与ESP8266模块之间的通信 3、具体实现目标&#xff1a;&#xff08;1&#xff09;创建5个执行器&#xff1a;蜂鸣器&#xff0c;LED1&#xff0c;LED2&#xff0c;ED3&#xff0c;LED4;&#xff08;2&#xff09;执行器能对…

VLAN 综合实验

一、实验拓扑 二、实验需求 1.PC1和PC3所在接口为access&#xff0c;属于vlan2&#xff1b; PC2/4/5/6处于同一网段&#xff0c;其中PC2可以访问PC4/5/6; 2.PC5不能访问PC6; 3.PC1/3与PC2/4/5/6不在同一网段&#xff1b; 4.所有PC通过DHCP获取IP地址&#xff0c;且PC1/3可以…

《Python编程从入门到实践》day28

# 昨日知识点回顾 安装Matplotlib 绘制简单的折线图 # 今日知识点学习 15.2.1 修改标签文字和线条粗细 # module backend_interagg has no attribute FigureCanvas. Did you mean: FigureCanvasAgg? # 解决办法&#xff1a;matplotlib切换图形界面显示终端TkAgg。 #…

SpringBoot自动装配(二)

近日&#xff0c;余溺于先贤古哲之文无法自拔。虽未明其中真意&#xff0c;但总觉有理。遂抄录一篇以供诸君品鉴——公孙鞅曰&#xff1a;“臣闻之&#xff1a;‘疑行无名&#xff0c;疑事无功。’君亟定变法之虑&#xff0c;殆无顾天下之议之也。且夫有高人之行者&#xff0c;…

游戏数值策划关卡策划文案策划系统策划及游戏运营干货

1.《游戏新手村》免费电子书 我2007年开始做网络游戏&#xff0c;后面又做过网页游戏和手机游戏。当时市面上关于游戏策划和运营的书籍屈指可数&#xff0c;于是我就想着要不我写一本吧&#xff0c;然后2014年10月开始撰写。关于本书的更多信息可查看这篇文章>> 游戏新手…

45.WEB渗透测试-信息收集-域名、指纹收集(7)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;计算机王-CSDN博客 WEB指纹&#xff1a;Web指纹也叫web应用指纹。由于所使用的工具、技术…

蓝鹏测控:扩大出口,勇拓海外市场

蓝鹏测控自2012年成立以来&#xff0c;始终专注于工业测量仪器的研发、生产与销售。公司坚持经验与创新并存&#xff0c;长期与华北电力大学、河北大学等多所知名院校深度合作&#xff0c;拥有一支技术力量雄厚的研发团队。经过多年的努力&#xff0c;蓝鹏测控已研发出多款具有…

MYSQL中的DQL

语法&#xff1a; select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段 limit 分页参数 条件查询 语法&#xff1a; 查询多个字段&#xff1a;select 字段1&#xff0c;字段2 from表名 查询所有字段&#xff1a…

【计算机毕业设计】基于SSM+Vue的线上旅行信息管理系统【源码+lw+部署文档+讲解】

目录 1 绪论 1.1 研究背景 1.2 设计原则 1.3 论文组织结构 2 系统关键技术 2.1JSP技术 2.2 JAVA技术 2.3 B/S结构 2.4 MYSQL数据库 3 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3 经济可行性 3.1.4 法律可行性 3.2系统功能分析 3.2.1管理员功能分析 3.2.…

PCie协议之-TLP Header详解(一)

✨前言&#xff1a; 在PCIe通信过程中&#xff0c;事务层数据包&#xff08;Transaction Layer Packets&#xff0c;简称TLP&#xff09;扮演着非常重要的角色。TLP用于在设备之间传递数据和控制信息&#xff0c;它们是PCIe的基本信息传输单元。 TLP可分为几个部分&#xff0c…

【平衡二叉树】AVL树(双旋)

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; C进阶 &#x1f389;其它专栏&#xff1a; C初阶 | Linux | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解AVL树的左双选和右双旋的相关内容。 如果看到最后您觉得这篇文章写…

Qt学习笔记1.3.3QtCore-隐式共享

文章目录 概述隐式共享细节类列表 Qt中的许多c类使用隐式数据共享来最大化资源使用并最小化复制。隐式共享类作为参数传递时既安全又高效&#xff0c;因为只传递指向数据的指针&#xff0c;并且只有当函数写入数据时才会复制数据&#xff0c;即写时复制(copy-on-write)。 概述 …