1. 程式人生 > >簡單網路管理協議(SNMP),SNMP++第三方API配置

簡單網路管理協議(SNMP),SNMP++第三方API配置

最近在對簡單網路管理協議(SNMP)進行學習,主要任務目標是獲取到指定程序的CPU使用率與記憶體佔用率。

首先通過網際網路資源熟悉SNMP的基本原來與功能,再此不重點討論。在對資料的學習當中,發現了基於C++的SNMP++第三方API,通過SNMP++可以獲取到諸如程序名稱,地址,CPU使用與記憶體佔用的原始資料。

首先需要進行的是在Windows 7作業系統下基於VS2013對SNMP++進行環境配置。

在此重點參考了以下幾篇技術部落格:

http://blog.csdn.net/lusvan/article/details/45015021 //主要參考
        http://blog.csdn.net/zzj806683450/article/details/39054059
http://blog.csdn.net/systomnet/article/details/25330437
http://blog.csdn.net/systomnet/article/details/25335065

http://blog.csdn.net/lusvan/article/details/45015021轉載原文如下:

現在agent++ 網站上的SNMP版本是3.3.4,但是根據網上所有的教程來操作,包括為數不多的一本書:《visual c++開發基於SNMP的網路管理軟體》,也不能實現編譯成靜態連結庫檔案,經過一天的摸索(包內文件的readme很重要),終於完成了編譯,我覺得最主要的問題還是要了解VS的編譯環境,缺什麼就加什麼。

篇幅較長,覺得囉嗦照圖操作

首先下載三個檔案解壓完成並複製到同一資料夾SNMP++下

其實不需要像其他教程一樣各種複製新增,我也那樣試過,是可以的,但是其他教程說那個VS2013之類的沒用到,覺得沒什麼用,剛開始我也這樣覺得,覺得就是.h,.cpp管用,但是我研究後發現,vs2013下的4個資料夾就是4個VS的工程資料夾,這4個工程資料夾直接可以生成4個靜態連結庫,agent++和agentx++是代理開發用的,如果只是開發管理站的完全可以刪去,我們只需要生成libdes.lib和SNMP++.lib.


libdes是用來支援SNMPv3的DES資料加密功能,在SNMP++的資料夾下的一個README中有:


實現SNMPv3需要OpenSSL,libdes,libtomcrypt其中之一個,libdes是最簡單實施的,所以只需要根據VS2013資料夾下的libdes來直接生成libdes.lib.

這個生成沒有問題,直接點選SNMP++/vs2013/libdes/libdes.sln,然後就能生成libdes.lib。

最麻煩的就是生成SNMP++.lib了

1,首先還是點選SNMP++/VS2013/SNMP++/SNMP++.sln,然後生成檔案,你會發現各種找不到,原來裝放原始碼的資料夾SNMP++/SNMP++-3.3.4是有版本號,而工程檔案的配置檔案中沒有版本號,所以得把版本號去掉

2,繼續生成


這個libsnmp.h是在SNMP++\vs2013\SNMP++\include下,所以要到專案屬性頁新增


有幾個D盤下的目錄是本來就有的,是錯誤的連結目錄,不用管


cpp檔案的標頭檔案找不到了,所以繼續新增目錄


我也納悶了,標頭檔案在SNMP++\snmp++\include\snmp_pp下,cpp檔案在SNMP++\snmp++\src下為什麼還是找不到呢,include"snmp_pp/***.h"包含的檔案找不到,說明編譯器找不到snmp_pp這個資料夾,這個資料夾在SNMP++\snmp++\include下,所以把這個也加到編譯目錄中去試試。


然後就OK了。

3,繼續執行,錯誤如下


左思右想發現應該吧libdes目錄加到檢索目錄中


然後再執行就OK啦


注1:如果後面出現這種錯誤

就右鍵點專案,然後解除安裝專案,再重新載入,生成,就OK了。

注2:以下的檔案是VS2013下的README.win32,用UE開啟顯示如下,簡單點就是說把SNMP++\snmp++\\include/snmp_pp/config_snmp_pp.h刪掉,然後把VS2013\SNMP++\include\snmp_pp\config_snmp_pp.h複製過來,防止版本錯誤。

注3,如果不許要SNMPv3的話可以在config_snmp_pp.h裡面修改,把箭頭指向的1改為0,這樣的話libdes.lib也不用載入,那個資料夾也不用下載了,文件說OpenSSL和libdes任選一個,所以第二個箭頭也改為0.但是理論是這樣的,我把第一個改了之後又是一堆錯誤,那就這樣吧...


http://blog.csdn.net/zzj806683450/article/details/39054059 轉載原文如下:

1.官網下載

snmp開發,首先需要機器已經安裝了snmp服務,這方面的資料網上比較完備,安裝的時候注意每少一個檔案,網上都可以下載到,這樣可以自己形成一個包,供以後使用。只要最後snmp的服務開啟就可以使用snmp服務了(剛開始trap服務可能是未開啟的) snmp++官網http://www.agentpp.com/,選擇自己需要的開發包,我這裡下載了snmp++v3.2.25.tar.gz,如果需要支援v3版本的資料傳送功能,還需要下載libdes-l-4.01a。準備工作做完之後,我們的目的就是要生成需要的兩個lib庫檔案。

2.編譯生成libdes.lib

   2.1在vs2010中新建一個win32專案,選擇靜態庫,空專案,不需要編譯頭

2.2將所有需要的標頭檔案和原始檔均加入進來,截圖如下:

   2.3 生成解決方案,這時會在工程目錄下的debug目錄下出現一個lib檔案,正是我們需要的

3.生成snmplib。

   3.1再新建一個同樣的win32專案,靜態庫,空專案,不需要編譯頭

   3.2將解壓後的snmp++/src目錄下和libdes-l-4.01a下所有的.cpp都加入到原始檔當中,同時還要將所有的.h檔案加入,可以直接使用專案屬性—C/C++--常規—附加包含目錄,將標頭檔案的目錄加進來


   3.3接下來,就生成解決方案,同樣也會生成對應的lib庫

4.拷貝snmplib.lib,libdes.lib,ws2_32.lib

將生成的兩個lib檔案及下載的ws2_32.lib都拷貝到vs2010安裝目錄的lib資料夾下,方面後續snmp開發

5.建立測試專案

   5.1新建專案,選擇win32控制檯應用程式TestCip。

   5.2匯入標頭檔案。

因為要用到snmp,所以還需要將snmp所需要的標頭檔案加入到附加包含目錄中,方便起見,可以將libdes的幾個標頭檔案均拷貝到snmp++的include目錄下,而include下的snmp_pp資料夾是snmp單獨的標頭檔案,這樣就只需引入一次標頭檔案就可以了。

5.3加入lib庫。

在專案屬性中,連結器/輸入中加入這樣幾項內容

5.4編寫測試程式

[cpp] view plain copy  print?
  1. #include <iostream>
  2. #include "snmp_pp/snmp_pp.h"
  3. usingnamespace std;  
  4. #define SYSDESCR "1.3.6.1.2.1.1.1.0" // Object ID for System Descriptor
  5. void get_system_descriptor(){  
  6.     int status;//return status
  7.     CTarget ctarget((IpAddress)"192.168.1.111");  
  8.     Vb vb(SYSDESCR);//SNMP++ variable Binding
  9.     Pdu pdu;//SNMP ++ pdu
  10.     //--------[Construct a SNMP++ SNMP Object--------------
  11.     Snmp snmp(status);//create a snmp  session
  12.     if (status != SNMP_CLASS_SUCCESS)  
  13.     {  
  14.         cout << snmp.error_msg(status);//if fail,print error string
  15.         return;  
  16.     }  
  17.     //---------[Invoke a SNMP++ Get]------------------------
  18.     pdu += vb;//add the variable binding
  19.     if ((status = snmp.get(pdu,ctarget)) != SNMP_CLASS_SUCCESS)  
  20.     {  
  21.         cout << snmp.error_msg(status);  
  22.     }  
  23.     else {  
  24.         pdu.get_vb(vb,0);//extract the variable binding
  25.         cout << "System Descriptor = " << vb.get_printable_value();  
  26.     }  
  27. }  
main函式,這裡就不寫了,直接呼叫這個函式就OK

6.執行結果



相關推薦

簡單網路管理協議SNMPSNMP++第三方API配置

最近在對簡單網路管理協議(SNMP)進行學習,主要任務目標是獲取到指定程序的CPU使用率與記憶體佔用率。 首先通過網際網路資源熟悉SNMP的基本原來與功能,再此不重點討論。在對資料的學習當中,發現了基於C++的SNMP++第三方API,通過SNMP++可以獲取到諸如程序名稱

簡單網路管理協議SNMP通過第三方API SNMP++ 提取程序名稱路徑與PID資訊

書接上文,在此部落格中記錄獲取程序名稱,路徑與PID資訊的子函式 上篇部落格中記錄了初始定義的結構體與其他變數的定義。直接上程式碼段: /*=========================================================== 函式名稱:Ge

SNMPSimple Network Management Protocol簡單網路管理協議

SNMP(Simple Network Management Protocol)即簡單網路管理協議,它為網路管理系統提供了底層網路管理的框架。SNMP協議的應用範圍非常廣泛,諸多種類的網路裝置、軟體和系統中 都有所採用,主要是因為SNMP協議有如下幾個特點:首先,相對於其它種

SNMP簡單網路管理協議介紹

系列教程 內容介紹 作為系統管理員,我們的主要工作就是收集來自伺服器與基礎設施的準確資訊。目前多種工具都能夠幫助我們實現此類資訊收集任務,而其中大部分都以同一技術為基礎,即SNMP。 SNMP全稱為簡單網路管理協議。其不僅能夠收集伺服器的當前狀

簡單網路管理協議SNMP

一、SNMP SNMP是基於TCP/IP協議族的網路管理標準,是一種應用層協議,是目前網路中應用最廣泛的網路管理協議。SNMP使用客戶/伺服器模型,對應著管理站和代理站。SNMP的核心是幫助管理員簡化一些支援SNMP裝置設定的操作(也包括這些資訊的收集),提供從網路上的裝置

圖解HTTP之——簡單的HTTP協議

本章將針對 HTTP 協議結構進行講解,主要使用HTTP/1.1版本。學完 這章,想必大家就能理解 HTTP 協議的基礎了。 1.1 HTTP 協議用於客戶端和伺服器端之間 的通訊  HTTP 協議和 TCP/IP 協議族內的其他眾多的協議相同,用於客戶端和 伺服器之間的通訊

Socket簡單入門UDP協議1

一、伺服器端程式碼: 1 import java.io.IOException; 2 import java.net.DatagramPacket; 3 import java.net.DatagramSocket; 4 import java.net.SocketAddress; 5 im

第7章 網路協議3_ARP協議

3. ARP協議 3.1 ARP(Address Resolution Protocol)協議的工作過程和安全隱患 (1)計算機A和C通訊之前,先檢查ARP快取中是否有計算機C的IP地址對應的MAC地址。如果沒有,就啟用ARP協議傳送一個ARP廣播請求解析192.168.0.4的MAC

第7章 網路協議2_ICMP協議

2. ICMP協議 2.1 ICMP報文(Internet Control Message Protocol)的型別 報文型別 型別值 程式碼 描述 請求報文 8 0

第7章 網路協議1_網路層首部

1. 網路層首部 1.1 網路層協議 (1)TCP/IP協議棧網路層的4個協議:IP協議、ICMP協議、IGMP協議和ARP協議。 (2)IP協議:動態路上協議的統稱,包括RIP和OSPF協議。 (3)TCP/IP協議分成四層:應用層定義了客戶端和伺服器通訊規範,傳輸層實現可靠

圖解HTTP之——簡單的HTTP協議

接圖解HTTP之——簡單的HTTP協議(一) 1.5告知伺服器意圖的 HTTP 方法 下面,我們介紹 HTTP/1.1 中可使用的方法。 GET :獲取資源 GET 方法用來請求訪問已被 URI 識別的資源。指定的資源經伺服器 端解析後返回響應內容。也就是說,如果請求的資源是文字,那就保 持

圖解HTTP之簡單的HTTP協議

HTTP 協議和 TCP/IP 協議族內的其他眾多的協議相同,用於客戶端和伺服器之間的通訊。請求訪問文字或影象等資源的一端稱為客戶端,而提供資源響應的一端稱為伺服器端。 在兩臺計算機之間使用 HTTP 協議通訊時,在一條通訊線路上必定有一端是客戶端,另一端則是伺服器端。 HTTP 協議規定,

第1章 計算機網路協議2_OSI參考模型

2. OSI參考模型 2.1 OSI參考模型詳解 (1)參考模型的優點   ①將網路的通訊過程劃分為小一些、功能簡單的部件,有助於各個部件開發、設計和故障排除。   ②通過網路元件的標準化,允許多個供應商進行開發生產出標準的網路裝置(如裝置的介面標準和電壓標準)

第1章 計算機網路協議1_網路的概念

1.計算機網路 (1)網路:多臺計算機使用集線器或交換機連線起來構成的一個網路(這樣連線起來的所有計算機將處於同一個網段)。集線器或交換機負責在同一個網路中轉發資料包。 (2)網際網路絡:使用路由器將多個網路(處於不同網段的網路)連線起來,就形成網際網路。路由器負責在

OpenStack的網路管理指南4——使用Openstack網路

實現OpenStack的網路安全組,您可以直接利用neutron security-group-rule-create來建立安全組規則。下面的示例允許ping和ssh訪問你的虛擬機器。 $ neutron security-group-rule-create --protocol icmp --direct

網路時間協議NTP

今天在看《linux核心原始碼情景分析》的時候,在中斷那章看到了時間中斷,裡面提到時鐘是計算機系統裡非常重要的部分,不僅僅對單個計算機系統很重要,對於計算機網路來說同樣非常重要,就想到一個問題,在網路中,不同的計算機之間是如何同步時鐘的?暫時還沒有考慮時鐘不同步時可能出現哪

OpenStack的網路管理指南1——概述

個人翻譯和理解有限,有錯誤的地方請各位大牛指正 前言 openstack網路的建立是為定義網路連線和雲中的定址提供豐富的API,Neutron服務(先前被稱為“Quantum”),使運營商能夠利用不同的網路技術去搭建他們的雲網絡。 作為與昆騰公司( “量子”商標的所有者

無線網路管理工具linux

This is the list of available known wireless managers you can use in distributions NetworkManager - GUI based connection manager with

無線感測網路協議

(一)概述 一、無線感測器路由協議的特點與要求 1、特點 無線感測網路由協議負責將分組從源節點通過網路節點轉發到目的節點,它主要包括兩個方面的功能:①尋找源節點和目的節點間的優化路徑 ②將資料分組沿著優化路徑正確轉發 無線感測路由協議具有以下特點: (1)能量優先。傳統路由

shiro使用第三方jdbcRealm連接數據庫操作

void 一個數 drop source QQ 技術 post classpath uid 這裏采用第三方實現好的JdbcRealm連接數據庫;首先來看一下源碼; 接著前面的說;就把這個類當做我們自己寫的就好了,我們需要實例化它,然後給他註入一個數據源 下面是ini文件