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

2024-05-14 22:44

本文主要是介绍Windows snmp++获取本地主机信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编译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;
#endifusing 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++ sessionSnmp 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 addressUdpAddress targetAddress(a[i].bb.c_str());// Create the target using the target address and community stringCTarget target(targetAddress);target.set_version(version2c); // Use SNMPv2ctarget.set_retry(3);           // Set the number of retriestarget.set_timeout(1000);      // Set the timeout (milliseconds)target.set_readcommunity(a[i].aa.c_str());// Create a PDU object for the SNMP GET requestPdu pdu;pdu.set_type(sNMP_PDU_GET);pdu += Vb(a[i].cc.c_str()); // Add the OID to retrieve// Send the SNMP GET requeststatus = snmp.get(pdu, target);if (status == SNMP_CLASS_SUCCESS){// Check the response PDU for errorsif (pdu.get_error_status() == SNMP_ERROR_SUCCESS){// Iterate through the received variable bindingsfor (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 subsystemreturn 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服务)

这篇关于Windows snmp++获取本地主机信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu