?1、在线获取安装包
http://www.agentpp.com/snmp_pp3_x/download_snmp_ppv3/download_snmp_ppv3.html
可以下载libdes以及snmp++的安装包。
2、解压,获得文件夹libdes和snmp++
tar -zxvf libdes-l-4.01a.tar.gz
? tar -zxvf snmp++v3.2.25.tar.gz?
3、编译所需lib文件并且拷贝至/usr/lib目录
cd libdes
make -f Makefile
cp libdes.a /usr/lib
?cd snmp++/src
make -f Makefile.linux
cd ../lib
cp * /usr/lib
4、拷贝头文件至/usr/include目录
cd snmp++/include
cp -r snmp_pp /usr/include
5、测试代码
test.cpp
#include <iostream>
#include <snmp_pp/snmp_pp.h>
using namespace std;
#define SYSDESCR "..1.3.6.1.4.1.2021.4.3.0" // Object ID for System Descriptor
int main()
{
Snmp::socket_startup(); // 这个很重要。虽然是SNMP++但是还是不能完全脱离WinAPI。
int status; // return status
CTarget ctarget((IpAddress)"127.0.0.1"); // SNMP++ v1 target //换成你用snmputil行的通的地址。
Vb vb(SYSDESCR);
// Vb vb(PRINTCOUNT); // SNMP++ Variable Binding
Pdu pdu; // SNMP++ PDU
//-------[ Construct a SNMP++ SNMP Object ]---------------------------------------
Snmp snmp(status); // Create a SNMP++ session
if( status != SNMP_CLASS_SUCCESS){ // check creation status
cout<<"status error!"<<snmp.error_msg(status)<<endl; // if fail, print error string
return -1;
}
//-------[ Invoke a SNMP++ Get ]-------------------------------------------------------
pdu += vb; // add the variable binding
if((status = snmp.get(pdu, ctarget)) != SNMP_CLASS_SUCCESS)
cout<<"snmp.get error!"<<snmp.error_msg(status)<<endl;
else{
pdu.get_vb(vb, 0); // extract the variable binding
// getchar();
cout<<"System Oid = "<<vb.get_printable_oid()<<endl; // print out
cout<<"System Descriptor = "<<vb.get_printable_value()<<endl; // print out
}
// getchar();
//
return 0;
}
6、编译并运行
g++ test.cpp -o test -lsnmp++ -ldes -lpthread
7、测试结果
?
?
|