SNMP

2.         Target Class

Target class是一个C++类,在SNMP++中用它来定义和使用target。一个target在SNMP通讯中,可以想象成一个代理端的管理层的概念,它由多个网络地址组成。Targets包含了重发和超时机制的信息,还有SNMP协议类型(即SNMPv1和SNMPv2)等等。目前已有的Targets唯一的子类是Community-based CTarget。CTarget class可用在SNMPv1和SNMPv2的通讯上,由此可以重用你已有的代码到SNMPv2通讯中,不需要做修改。通过它,还可以使得一个SNMP++会话与某个特定的代理端的属性无关。

2.1.        抽象的Target

SNMP++支持抽象Target的概念。由该(抽象)Target可以操作所有实际的Target派生类。所有使用Target的SNMP++成员函数接收的都是抽象Target,而不是特指的派生Target对象。当需要支持新的Target时,这种抽象的接口可以减小代码的改动。

2.2.        Target地址

每个target都与一个地址对象(Address object)相关联。该地址是一个GenAddress,因此可以处理所有SNMP++地址(IP, IPX或其他)。为指明被管理的代理端地址并与一个Target相关联,(只需要)简单地通过构造函数的参数或成员函数(就可实现)。

2.3.        重发机制

每个Target都具有重发机制,(在该机制中)定义了超时和重发。(由该重发机制)可指定等待一个SNMP应答的周期,以及当没有收到一个SNMP应答时进行多少次重发。超时(的最小单位)被定义成百分之一秒,即当取值为100代表每个应答等待1秒。重发时记录了重发的次数,(注意)第一次请求不属于重发,只是发送。所以重发值取3,表示当等待一个应答时最多可以重发3次。等待的总时间可以用下列式子计算:Total Wait Time = time-out  * (retry+1)

如果一个SNMP++应答没有在(上式)所计算出来的等待总时间内到来,将会返回一个SNMP++超时的错误号。该操作在阻塞和异步两种调用中(都可)使用。

2.4.        Target Class接口

Target Class Member Functions

Description

Constructors

CTarget::CTarget( void);

构造一个无效的CTarget。重发机制的默认值:community names =“public”, retry=1,time_out=1。

CTarget::CTarget(const Address &address ,

const char *read_community_name,

const char *write_community_name,

用community names和Address object构造一个CTarget。重发机制的默认值:retry=1,time-out =100ms。

CTarget( const Address &address

const OctetStr &read_community_name,

const OctetStr &write_community_name);

用OctetStr Communities和Address构造一个CTarget

CTarget::CTarget( Address &address);

用Address object构造一个CTarget。重发机制的默认值:community names =“public”, retry=1,time_out=1。

CTarget::CTarget( const CTarget &target);

拷贝构造函数

Destructor

CTarget::~CTarget();

删除CTarget对象,释放所有资源。

Member Functions

char * get_readcommunity();

返回读(权限)的community名称

void get_readcommunity( OctetStr& read_community_oct);

获取OctetStr格式的读(权限)community

void set_readcommunity( const char * get_community);

设置读(权限)community

void set_readcommunity( const OctetStr& read_community);

用一个OctetStr设置读(权限)community

char * get_writecommunity();

获取写(权限)community

void get_writecommunity( OctetStr &write_community_oct);

获取OctetStr格式的写(权限)community

void set_writecommunity( const char * new_set_community);

设置写(权限)community

void set_writecommunity( const OctetStr& write_community);

用一个OctetStr设置写(权限)community

int  get_address( GenAddress &address);

获取Address object.

void set_address( Address &address);

设置Address部分

CTarget& operator=( const CTarget& target);

把一个CTarget赋给另一个。

snmp_version get_version();

返回SNMP版本(version1或version2)

void set_version( const snmp_version v);

设置版本(version1或version2)

int operator==( const CTarget &lhs, const CTarget &rhs);

比较两个CTargets

Abstract Class Member Functions

int valid();

返回一个Target的有效性

void set_retry( const int r);

设置重发值

int get_retry();

获取重发值

void set_timeout( const unsigned long t);

设置超时值

unsigned long get_timeout();

获取超时值

2.5.        CTarget Class (以Community为基础的Target)

CTarget class允许显示地定义以Community为基础的Target。一个CTarget用以SNMP Community为基础的Target定义了一个SNMP代理端。这包含了“读(权限)、写(权限)”的community names and an address。地址是用SNMP++ Address class来表示的,所以该地址可以是IP或者IPX address(译注:Address class是个抽象基类,所以可以实现多态操作)。CTarget class使用前提应该是:应用开发者明确地知道代理端所支持的以SNMP community为基础的访问(方式),即SNMPv1或SNMPv2。

2.5.1.       CTarget对象(可通过)3种不同的方式构建

// ----------[ instantiating CTarget Objects ]-----------------------------

// valid complete instantiation

CTarget    ct((IpAddress)” 10.10.10 .10”,  // Address

                      “public”,                              // read community name

                      “public”);                            // write community name

// valid complete using “public” defaults

CTarget ct( (IpAddress) “ 1.2.3 .4”);

// invalid CTarget

CTarget ct;

2.5.2.       修改CTargets

//----[ modifying CTargets ]------------------------------------

ct.set_readcommunity(“private);   // modifying the read community

ct.set_writecommunity(“private”);  // modifying the write community

ct.set_address( (IpAddress) “ 15.29.33 .210”);

2.5.3.       访问CTargets

//-----[ Accessing CTarget member variables ]-------------------------

// get the write community name

cout << “Write community” << ct.get_writecommunity(); 

// get the read community name

cout << “Read community ” << ct.get_readcommunity();

// get the address

GenAddress address;

ct.get_address( address);

// check the validity of a target

if ( ct.valid())

cout << “Target is valid”;

2.5.4.       CTargets例子

//------------[CTarget class examples ]-----------------------------------------------------------------

// create a valid CTarget using a GenAddress

CTarget ct( (GenAddress) “ 10.20.30 .40”);

// create a valid CTarget using an IpxAddress

IpxAddress ipxaddress(“01010101 -010101010101” );

CTarget my_target( ipxaddress);                          // use default “public” for communities

// create an invalid CTarget object

CTarget  ct;                                                      // no construction params therefor invalid

if ( !ct.valid()) 

   cout << “Invalid CTarget instance!”;

// get the read community

cout << “Read Community =” << ct.get_readcommunity();

// get the write community

cout << “Write Community = ” << ct.get_writecommunity();

// modify the get community

ct.set_readcommunity( “pilsner”);

// modify the write community

ct.set_writecommunity(“pale ale”);       

(0)

相关推荐

  • 2020蒙古IMO代表队选拔考试部分试题(重发u)

    第二题译错重发. 请大家见谅. 点击"阅读原文",可以跳转至英文原文. 久霖工具箱1.3.0版已经上线! 现有质因数分解,求最大公约数,求阶和数论倒数,进制转换四个小程序,扫下面的 ...

  • 重发川西【甲居藏寨】

    发出去的川西[甲居藏寨]太小了,感觉对不住好友们,现重发,请见谅. 甲居藏寨位于四川甘孜州丹巴县境内,犹如田园牧歌般的童话世界,享有"西藏童话世界"的美称. 她象群星撒落般坐落在依 ...

  • Python通过SNMP监控网络设备

    前段时间,为了实现自动化巡检,我开发了自动化巡检工具,由于我的系统设备版本比较多,所以我是分别开发的客户端程序,服务端使用dll文件与客户端通信,服务端的dll在与python通信,通过Python丰 ...

  • ubuntu snmp 安装与移植

    一.net-snmp-5.7.3配置编译安装 https://blog.csdn.net/qq_21342281/article/details/89466931 1.确定Ubuntu系统在arm检查 ...

  • 什么是SNMP

    简介 SNMP系统组成 SNMP查询 SNMP设置 SNMP Traps SNMP端口号 使用SNMP的相关信息 简介 简单网络管理协议SNMP(Simple Network Management P ...

  • 网络协议篇之SNMP协议(一)

    (前言:最近工作中遇到大量的网络协议开发,现就其中一些网络协议的基础知识进行整理,文中借鉴了一些大神的整理,后面会贴上链接,如侵删)        简单网络管理协议(SNMP)是TCP/IP协议簇的一 ...

  • 网络协议篇之SNMP协议(二)

    上篇文章提到一套完整的SNMP系统主要包括管理信息库(MIB).管理信息结构(SMI)及SNMP报文协议. 本篇我们来学习管理信息库(MIB) 一.管理信息库MIB 任何一个被管理的资源都表示成一个对 ...

  • SNMP管理信息模型

    一.SNMP管理框架 TCP/IP网络管理 Internet的网络管理主要基于TCP/IP协议簇中的SNMP协议. 在基于SNMP的网络管理中,包含有关被管理资源以及元素信息的数据库这个数据库就是管理 ...

  • 什么是SNMP?为什么需要SNMP?

    为什么需要SNMP? 随着网络技术的飞速发展,在网络不断普及的同时也给网络管理带来了一些问题: 网络设备数量成几何级数增加,使得网络管理员对设备的管理变得越来越困难:同时,网络作为一个复杂的分布式系统 ...

  • Snmp学习总结(一)

    一.SNMP简单概述 1.1.什么是Snmp SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议& ...

  • Snmp学习总结(三)

    一.安装SNMP Win7操作系统默认情况下是不安装SNMP服务的,今天讲解一下在Win7操作系统下安装SNMP,具体安装步骤如下: WIN7操作系统下安装SNMP的步骤如下: 开始安装SNMP 正在 ...