snmp++ 3.3.7开发包的使用

SNMP++是什么?

SNMP++是HP公司开发的一套用于SNMP编程的C++开源库,提供了简单易用的接口,被广泛使用于网络管理的开发。

snmp++ 于2016年2月29发布了新的版本,针对于C++ API接口的包已经更到了3.3.7版本。 大家可以从http://www.agentpp.com/网站去下载最新的版本的源文件。

基于snmp++  3.3.7开发时所需要以下两种类型的文件,然后把这两种类型的文件拷贝至相应的路径下即可。

1、头文件

2、库文件

网上有很多snmp++ 3.2.25版本编译成库文件的文章,但snmp++ 3.3.7版本库的编译,过程稍有不同,特此记录之。

我的系统是Centos 6.7(64位),gcc 版本为系统装好后的默认版本4.4.7。

一、下载文件并解压

       1)从http://www.agentpp.com/网站下载libdes-l-4.01a.tar.gzsnmp++-3.3.7.tar.gz

       2)分别解压libdes-l-4.01a.tar.gz和snmp++-3.3.7.tar.gz这两个压缩包,解压之后会分别生成libdes和snmp++-3.3.7的两个文件夹

二、编译生成libdes.a 库文件,并将库文件拷贝至/usr/lib目录    

     生成libdes.a文件步骤比较简单:

    1、进入libdes目录;  2、利用文件夹下现成的Makefile编译生成libdes.a文件;  3、将libdes.a文件拷贝至/usr/lib目录下即可。

    cd libdes
    make -f Makefile   
    cp libdes.a /usr/lib

三、编译生成snmp++相关库文件,并将库文件拷贝至/usr/lib目录 

snmp++ 3.3.7库文件的生成和snmp++ 3.2.25版本库文件的生成有很大不同,snmp++ 3.2.25版本在src目录下就有对应linux环境的Makefile.linux的makefile文件,直接make就可以生成对应的库文件了。snmp++ 3.3.7不一样,需要利用其提供的./configure 文件去生成makefile文件。    生成snmp++文件步骤:

1、进入snmp++-3.3.7目录;  

2、利用目录下提供的configure脚步在src目录下生成makefile文件;

3、进入src目录下,利用./configure生成的makefile文件make编译生成lib库文件;   

4、进入隐藏目录.libs下将lib文件拷贝至/usr/lib。

  cd snmp++-3.3.7
  ./configure                  
  cd src
  make                       
  cd .libs/                    
  cp lib* /usr/lib    

四、拷贝头文件至/usr/include

  cd snmp++-3.3.7
  cp libsnmp.h   /usr/include/         
  cd include
  cp -r snmp_pp /usr/include
  ldconfig                           

五、测试

snmp++-3.3.7.tar.gz解压后专门有一个consoleExample的目录,可以利用下面的cpp文件进行测试,比如我就用下面的snmpGet.cpp 文件进行测试

cd consoleExamples/
g++ snmpGet.cpp -o snmpget-lsnmp++ -ldes                 //编译的时候把我们上面生成的库文件加上,否则报错。

如果你的系统环境和我的一样,centos6.7的版本,gcc 版本4.47,上面命令执行完时,还是报错。主要原因两点:

1、snmpGet.cpp在预处理时,试图导入iostream.h的古老文件。

 iostream.h是98年标准化以前的文件,太旧了。现在都是用的iostream的文件,# include 改成# include 

解决方法: 

step1: 在 /usr/include/libsnmp.h的220行,      将# include改成# include

step2: 在我们所用到的测试文件snmpGet.cpp 中,添加该代码,using namespace std; 

2、未include相关头文件

解决办法,直接在/usr/include/libsnmp.h  添加以下代码就行。

#include

#include

六、再次测试

再次执行

  g++ snmpGet.cpp -o snmpget -lsnmp++ -ldes  
 ./snmpget --help  

如果输出帮助提示,说明SNMP++ 的环境就搭建好了。

再找个设备,配上IP和read community string,在真实测试以下。

[root@localhost consoleExamples]# ./snmpget 192.168.2.80 -v2 -Cpublic 1.3.6.1.2.1.1.1.0
20161007.13:03:39: 139844037580768: (6)INFO   : AuthPriv: Added auth protocol (id): (3)
20161007.13:03:39: 139844037580768: (6)INFO   : AuthPriv: Added auth protocol (id): (4)
20161007.13:03:39: 139844037580768: (6)INFO   : AuthPriv: Added auth protocol (id): (5)
20161007.13:03:39: 139844037580768: (6)INFO   : AuthPriv: Added auth protocol (id): (6)
20161007.13:03:39: 139844037580768: (6)INFO   : AuthPriv: Added auth protocol (id): (7)
20161007.13:03:39: 139844037580768: (6)INFO   : AuthPriv: Added auth protocol (id): (2)
20161007.13:03:39: 139844037580768: (6)INFO   : AuthPriv: Added priv protocol (id): (2)
20161007.13:03:39: 139844037580768: (6)INFO   : AuthPriv: Added priv protocol (id): (4)
20161007.13:03:39: 139844037580768: (6)INFO   : AuthPriv: Added priv protocol (id): (20)
20161007.13:03:39: 139844037580768: (6)INFO   : AuthPriv: Added priv protocol (id): (21)
20161007.13:03:39: 139844037580768: (3)INFO   : AuthPriv: Added default Auth and Priv protocols.
SNMP++ Get to 192.168.2.80 SNMPV2 Retries=1 Timeout=1000ms Community=public
20161007.13:03:39: 139844037580768: (4)DEBUG  : SNMPMessage: return value for build message: (0)
**************************
VB nr: 0
Oid = 1.3.6.1.2.1.1.1.0
Value = Cisco IOS Software, C3550 Software (C3550-IPSERVICESK9-M), Version 12.2(50)SE3, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2009 by Cisco Systems, Inc.
Compiled Wed 22-Jul-09 07:25 by prod_rel_team
Syntax = 4

ok,如果能看到以上类似的信息输出,恭喜,环境搭建成功。

另外上面有很多的log和其他的没必要的信息输出,你就需要在相关源文件把它去掉或注释掉,重新编译就ok了。

你可能感兴趣的:(C,&,C++)