实验六 SNMP管理器编程

实验六 SNMP管理器编程
实验六 SNMP管理器编程

实验五SNMP管理器编程

一、实验目的

掌握应用SNMP++软件包开发SNMP管理程序的基本方法。二、实验内容

编写一个简单的SNMP Manager 程序,能够查询指定设备和对象信息。

三、实验环境

SNMP++ v3.2.25软件包、VC++6.0开发工具。

四、实验步骤

1、编译SNMP++软件包

1)下载SNMP++v3.2.25.tar.gz并解压到D盘根目录下,同时修改

文件D:\snmp++\include\snmp_pp\config_snmp_pp.h,在其中添加下面代码用来去除SNMPv3(如果不添加该行,那么需要添加des库来实现SNMPv3的安全功能):

#define _NO_SNMPv3 //去掉SNMPv3。

2)按照教材91页7.2.2小节的步骤完成编译工作

注意:为工程添加的源文件是指D:\snmp++\src下的所有*.cpp文件,头文件是指D:\snmp++\include\snmp_pp下的所有*.h文件。

2、编写一个简单的SNMP Manager。

1)首先建立VC++6.0控制台工程ManagerTest

在Project →Settings→Link →Object /library modules中添加

ws2_32.lib 、snmp _pp.lib,如下图:

2)输入ManagerTest的全部代码,然后执行编译:

#include

#include

using namespace std;

int main(int argc, char* argv[])

{

Vb vb;

Pdu pdu;

int status;

Snmp::socket_startup(); //开启Socket

UdpAddress address((LPCTSTR) "192.168.1.80"); //设置被管设备的IP地址address.set_port(161); //设置端口号

Snmp snmp(status, 0,false); //新建SNMP对象

Oid oid("1.3.6.1.2.1.1.1.0"); //指定被管对象实例标识符

vb.set_oid(oid);

pdu+=vb;

//设置发送对象

CTarget ctarget(address);

ctarget.set_version(version1);

ctarget.set_retry(1);

ctarget.set_timeout(100);

ctarget.set_readcommunity((LPCTSTR)"public");

SnmpTarget *target;

target = &ctarget;

//发送PDU并获取结果

status = snmp.get(pdu,*target);

if(status == SNMP_CLASS_SUCCESS)

{

//输出结果

pdu.get_vb(vb,0);

cout<

}

Snmp::socket_cleanup();

}

3)运行ManagerTest查看运行结果,正常情况应如下图所示。

如果未能得到类似的结果,应检查被管设备是否运行SNMP协议和相关的服务、端口是否正确、共同体名是否相符等情况,将原

因详细记录。

4)修改程序,查询设备(172.21.85.254)的ipInReceives对象的

信息。

5)修改程序,查询设备(172.21.85.254)的ipRouteTable中目的

网络为210.38.176.0的ipRouteNextHop对象的信息。

6)尝试完善程序,使得能根据输入的IP、对象OID、端口等进

行信息查询,例如:

ManagerTest 172.21.85.254 1.3.6.1.2.1.1.1.0 161 五、实验报告

提交程序运行的结果、修改后的程序代码和运行结果、实验过程中遇到的问题及解决的办法。

相关主题
相关文档
最新文档