资源简介
基于SNMP++提取进程内存使用,CPU占用率,进程名称,PID,路径等信息的功能函数,生成了DLL,源码与测试例程送上
代码片段和文件信息
#include “snmp_pp/snmp_pp.h“
#include
#include
#include
#include
#include
#pragma comment(lib“SNMP++.lib“)
#pragma comment(lib“libdes.lib“)
#ifdef WIN32
#define strcasecmp stricmp
#endif
#ifdef SNMP_PP_NAMESPACE
using namespace Snmp_pp;
#endif
#if (__GNUC__ > 2)
#include
using std::cerr;
using std::cout;
using std::endl;
using std::flush;
#else
#include
#endif
#define NUM_SYS_VBS 2
#define sysDescr “.1.3.6.1.2.1.25.1.2.0“//系统当前日期时间OID
#define sysobjectID “.1.3.6.1.2.1.25.1.1.0“//系统运行OID
#define coldStart “1.3.6.1.6.3.1.1.4.3.0.1“
/*定义了Oid数组,Process结构体,
以及extern int sum_cpu_t1 = 0;//t1时刻CPU总占用率
extern int sum_cpu_t2 = 0;//t2时刻CPU总占用率
等变量*/
Oid full_oid[200];//读取OID一列数据中间存储变量数组
struct Process//获取系统进程名称,PID,路径,t1时刻CPU占用率,t2时刻CPU占用率,内存占用率,进程在t2-t1时刻的CPU占用率
{
char name[50];
char PID[20];
char Path[100];
Oid OID;
int Cpu_used_t1;
int Cpu_used_t2;
int Mem_used;
float Cpu_used_percent_for_each_process;
};
extern int sum_cpu_t1 = 0;//t1时刻CPU总占用率
extern int sum_cpu_t2 = 0;//t2时刻CPU总占用率
/*===========================================================
函数名称:Get_time
函数功能:获取当前系统时间以及系统开启时间
函数参数:char *genAddrStr 输入主机地址(“127.0.0.1“)
返回值: 无返回值
=============================================================*/
void Get_time(char *genAddrStr)
{
//=======================================================
const char *a = 0;/*等号之间变量为用于将提取到的OID内容进行char*到int型的转换的中间变量*/
char a1[19] = { 0 };
char a2[12] = { 0 };
int a3[6] = { 0 };
const char *a4 = { 0 };
char a5[4] = { 0 };
char a6[3] = { 0 };
int a7 = 0;
float a8 = 0.0;
float a9 = 0.0;
int run_time = 0.0;
int now_time_min = 0.0;
int used_time_min = 0.0;
int open_hour = 0.0;
int open_min = 0.0;
int day_time = 0;
int day_time_min = 0;
int bbb = 0;
//========================================================
int status;
char *req_str = (char*) “get“;
char *dflt_trp_oid = (char*)coldStart;
//char *genAddrStr = (char*) “127.0.0.1“; // localhost
char *oid_str = (char*)NULL;
Snmp::socket_startup(); // Initialize socket subsystem
IpAddress ipAddr(genAddrStr);
if (!ipAddr.valid()) {
cout << “Invalid destination: “ << genAddrStr << endl;
}
// bind to any port and use IPv6 if needed
Snmp snmp(status 0 (ipAddr.get_ip_version() == Address::version_ipv6));
if (status){
cout << “Failed to create SNMP Session: “ << status << endl;
}
cout << “Created session successfully“ << endl;
CTarget target(ipAddr);
if (!target.valid()) {
cout << “Invalid target“ << endl;
}
Pdu pdu;
Vb vb;
if (strcmp(req_str “get“) == 0) {
Vb vbl[NUM_SYS_VBS];
vbl[0].set_oid(sysDescr);
vbl[1].set_oid(sysobjectID);
cout << “Send a GET-REQUEST to: “ << ipAddr.get_printable() << endl;
if (!oid_str) {
//if (strcmp(genAddrStr “localhost“) == 0 ||
// strcmp(genAddrStr “127.0.0.1“) == 0){
pdu.set_vblist(vbl NUM_SYS_V
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-08-04 15:59 2222 - 副本\
目录 0 2017-07-26 17:34 2222 - 副本\2222\
文件 4941 2017-07-26 15:42 2222 - 副本\2222\2222.vcxproj
文件 1280 2017-07-25 14:18 2222 - 副本\2222\2222.vcxproj.filters
文件 165 2017-07-25 14:02 2222 - 副本\2222\2222.vcxproj.user
目录 0 2017-07-26 10:23 2222 - 副本\2222\Debug\
文件 1713 2017-07-25 15:31 2222 - 副本\2222\Debug\2222.Build.CppClean.log
文件 4107 2017-07-26 10:23 2222 - 副本\2222\Debug\2222.log
目录 0 2017-07-26 10:23 2222 - 副本\2222\Debug\2222.tlog\
文件 207 2017-07-26 10:23 2222 - 副本\2222\Debug\2222.tlog\2222.lastbuildstate
文件 4508 2017-07-26 10:23 2222 - 副本\2222\Debug\2222.tlog\2222.write.1u.tlog
文件 105534 2017-07-26 10:23 2222 - 副本\2222\Debug\2222.tlog\CL.read.1.tlog
文件 3602 2017-07-26 10:23 2222 - 副本\2222\Debug\2222.tlog\CL.write.1.tlog
文件 3602 2017-07-26 10:23 2222 - 副本\2222\Debug\2222.tlog\cl.command.1.tlog
文件 3620 2017-07-26 10:23 2222 - 副本\2222\Debug\2222.tlog\li
文件 8420 2017-07-26 10:23 2222 - 副本\2222\Debug\2222.tlog\li
文件 1756 2017-07-26 10:23 2222 - 副本\2222\Debug\2222.tlog\li
文件 313030 2017-07-26 10:23 2222 - 副本\2222\Debug\dllgenerator.obj
文件 28870 2017-07-26 09:17 2222 - 副本\2222\Debug\dllmain.obj
文件 1149952 2017-07-26 10:23 2222 - 副本\2222\Debug\vc120.idb
文件 552960 2017-07-26 10:23 2222 - 副本\2222\Debug\vc120.pdb
目录 0 2017-07-26 15:42 2222 - 副本\2222\Release\
文件 3743 2017-07-26 15:42 2222 - 副本\2222\Release\2222.log
目录 0 2017-07-26 15:42 2222 - 副本\2222\Release\2222.tlog\
文件 209 2017-07-26 15:42 2222 - 副本\2222\Release\2222.tlog\2222.lastbuildstate
文件 534 2017-07-26 15:42 2222 - 副本\2222\Release\2222.tlog\2222.write.1u.tlog
文件 52144 2017-07-26 15:42 2222 - 副本\2222\Release\2222.tlog\CL.read.1.tlog
文件 1688 2017-07-26 15:42 2222 - 副本\2222\Release\2222.tlog\CL.write.1.tlog
文件 1866 2017-07-26 15:42 2222 - 副本\2222\Release\2222.tlog\cl.command.1.tlog
文件 1936 2017-07-26 15:42 2222 - 副本\2222\Release\2222.tlog\li
文件 4698 2017-07-26 15:42 2222 - 副本\2222\Release\2222.tlog\li
............此处省略65个文件信息
评论
共有 条评论