CN101521592B - 一种建立打印机snmp代理的方法及装置 - Google Patents
一种建立打印机snmp代理的方法及装置 Download PDFInfo
- Publication number
- CN101521592B CN101521592B CN2008101012335A CN200810101233A CN101521592B CN 101521592 B CN101521592 B CN 101521592B CN 2008101012335 A CN2008101012335 A CN 2008101012335A CN 200810101233 A CN200810101233 A CN 200810101233A CN 101521592 B CN101521592 B CN 101521592B
- Authority
- CN
- China
- Prior art keywords
- printer
- access function
- general access
- function codes
- snmp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种建立打印机的简单网络管理协议代理的方法及装置,用以解决现有技术中存在对打印机信息的管理操作复杂、效率低的问题。本发明提供的建立打印机的简单网络管理协议代理的方法包括:将用户输入的管理信息库文件信息翻译成通用访问函数代码;根据用户的需要,将用户设置的特定代码加入所述通用访问函数代码;根据所述通用访问函数代码,生成打印机的简单网络管理协议代理。本发明用于建立打印机的简单网络管理协议代理,使得对打印机信息的管理及访问更加便捷。
Description
技术领域
本发明涉及计算机信息处理技术领域,尤其涉及一种建立打印机的简单网络管理协议(SNMP,Simple Network Management Protocol)代理的方法及装置。
背景技术
简单网络管理协议(SNMP,Simple Network Management Protocol)是由互联网工程任务组(IETF,Internet Engineering Task Force)定义的一套网络管理协议。该协议目前已在网络管理方面作为工业标准得到了广泛的接受和应用。
SNMP采用客户/服务器模式的特殊形式。SNMP系统包括网络管理工作站(NMS,Network Management Station)和运行在被管设备上的网管代理(SNMP Agent)。对网络的管理和维护是通过NMS和SNMP Agent之间的交互完成的。NMS和SNMP Agent之间是通过标准的SNMP协议进行通信。NMS是管理员使用的软件系统,一般位于服务器,主要负责向每个SNMP Agent发送SNMP请求,其中包括网络管理命令或请求。SNMP Agent位于成员网络设备上的软件模块,是网络设备侧软件系统的一部分,主要负责接收NMS发送的SNMP请求,并与该网络设备上的其他软件模块进行沟通、交互,完成NMS所要求的查询或操作。NMS和SNMP Agent之间一般是一对多的关系,管理员通过一台NMS管理多个网络设备。
其中,SNMP请求是关于管理信息库(MIB,Management InformationBase)信息的各种查询或操作。MIB相当于管理信息或对象列表,MIB是具有分层特性的信息集合,可以通过SNMP去存取这个集合中的信息。MIB中的成员是一些被管理的对象,以对象标识符(OID,Object Identifiers)来区分各个被管理的对象。每个SNMP Agent可以支持一个或多个MIB,这些MIB构成了这个SNMP Agent可以支持的管理信息或对象集合。NMS根据这些MIB,来访问和控制管理信息或对象。
每个SNMP Agent都有一个独立的IP地址,以UDP传输协议来发送和接收SNMP消息。SNMP Agent通过SNMP协议中定义的Trap消息发送网元告警或者告警恢复消息给NMS。
在目前的数码打印中,为了获取打印机的信息,需要用到SNMP服务。那么,上述的NMS为打印服务器;被管设备为打印机;SNMP代理为打印机中的打印代理模块;MIB为SNMP代理维护的打印机信息库。打印服务器通过SNMP或者SNMP++实现与打印机的通讯。SNMP++是为网络管理应用程序开发者提供的具有SNMP服务的C++类的集合。它具有基于面向对象模型建立的SNMP应用程序接口,在最小化的范围内使用已经存在的SNMP库,可以保证程序的高效运行和可移植性。
在目前的数码打印中,有的设备内置了SNMP服务,有的设备没有内置SNMP服务。对于内置SNMP服务的打印机,通过SNMP提供的方法(比如get、set等)实现与打印机通讯,获取打印机相关信息,而且用户不能定制自己的私有打印机信息,只能是标准的OID已经定义好的信息。而对于没有内置SNMP服务器的打印机,打印服务器为了获取打印机的状态信息,需要直接调用打印驱动函数,因此当打印驱动函数改变时需要对每个调用的地方都进行修改。当连接的打印设备变化时,也需要对调用函数进行多处修改。比如程序A处和B处都调用了打印驱动函数GetTrayInfo获取打印机的纸匣信息,当驱动函数接口改变为GetTrayStatus时,开发人员必须对程序A处和B处都进行修改,增加了重复开发的工作量。并且,这种方法要求开发人员对打印驱动函数有深入的了解,而且每款打印机的驱动程序不相同,因此为了获取打印机的相关信息编写的代码也不同。另外,用户无法根据自己的需求,定制相应的OID,为打印机设置自己的私有信息,例如,为打印机设置名称等。
综上所述,现有技术对打印机信息的管理操作复杂、效率低、不易于被定制。
发明内容
本发明实施例提供了一种建立打印机的简单网络管理协议代理的方法及装置,用以解决现有技术中存在对打印机信息的管理操作复杂、效率低的问题。
本发明实施例提供的建立打印机的简单网络管理协议代理的方法包括:
将用户输入的管理信息库文件信息翻译成通用访问函数代码;
根据用户的需要,将用户设置的特定代码加入所述通用访问函数代码;
根据所述通用访问函数代码,生成打印机的简单网络管理协议代理。
本发明实施例提供的建立打印机的简单网络管理协议代理的装置包括:
建立通用访问函数代码单元,用于将用户输入的管理信息库文件信息翻译成通用访问函数代码;
修改通用访问函数代码单元,用于根据用户的需要,将用户设置的特定代码加入所述通用访问函数代码;
生成SNMP代理单元,用于根据所述通用访问函数代码,生成打印机的简单网络管理协议代理。
本发明实施例,将用户输入的管理信息库文件信息翻译成通用访问函数代码;根据用户的需要,将用户设置的特定代码加入所述通用访问函数代码;根据所述通用访问函数代码,生成打印机的简单网络管理协议代理。通过该简单网络管理协议代理,实现了对打印机相关信息的统一管理,无需为不同类型的打印机设置不同的调用方案,减少了重复开发工作量,提高了工作效率。
附图说明
图1为本发明实施例提供的建立打印机的SNMP代理的方法流程示意图;
图2为本发明实施例提供的实现获取打印机状态的方法流程示意图;
图3为本发明实施例提供的打印服务端程序通过SNMP代理获取相应的打印机状态信息的方法流程示意图。
具体实施方式
本发明实施例,对于没有内置SNMP服务的打印机,建立SNMP代理服务,该代理服务用于对打印机相关信息(例如打印机状态、纸匣状态、作业信息等)进行统一管理,使得对于任何类型的打印机,打印机相关信息的调用方法都是一致的,无需为不同类型的打印机设置不同的调用方案。此外,该SNMP代理服务不依赖于任何操作系统运行,可以方便地在不同平台上移植,方便了打印机相关信息的管理。
下面结合附图对本发明实施例进行详细说明。
参见图1,本发明实施例提供的建立打印机的SNMP代理的方法包括:
S101、使用CreateMib文件编辑器把用户输入的MIB文件的信息翻译成能够被Agent++开发包应用程序接口(API,Application Interface)使用的通用访问函数代码。
该通用访问函数代码中提供了管理MIB文件信息的C++语言的表示形式及其访问方法,本发明实施例将步骤S101称为创建私有的MIB管理模块过程。
S102、根据用户的需要,对通用函数访问代码进行修改,加入用户特定的代码,使之能完成对设备管理信息(包含在MIB文件中)的访问,以及向管理站发送告警消息等操作。
本发明实施例将步骤S102称为定制私有的MIB管理模块过程。
S103、将经过修改的通用访问函数代码、SNMP++类库、Agent++类库,以及预先按主程序模块编写的主程序组织在一起,使用C++编译器进行编译,即可生成打印机的SNMP代理服务程序(简称SNMP代理)。
在后台运行SNMP代理服务程序,就可响应打印服务端和设备发来的SNMP操作指令,对MIB文件信息进行访问。
上述Agent++是在SNMP++的基础上进行扩展得到的,它是用来开发SNMP代理的一套C++类的集合。它继承了SNMP++的优点,封装了绝大部分的SNMP的标准操作,并且利用面向对象的特性,使开发者能通过派生的子类,重载其中的虚函数,根据应用程序的需要灵活控制程序。
通用访问函数代码是由Agent++类库中所包含的基类的派生类组成,主要包括get_request、get_state、set_state、set等派生函数。在基类中已经实现了访问管理对象的方法,根据面向对象语言的所具有的继承性,派生类中也具有访问用户MIB文件中管理对象的方法。但是,这些方法仅仅局限在基本的读写操作上,由于需要管理的打印机属性很多,而且每种属性生成的通用访问函数代码大同小异。因此,为了减轻开发人员的重复工作量,本发明实施例创建了一个可视化的程序CreateMib,提供输入Mib文件信息的接口,该Mib文件信息包括对象描述、对象标志符(OID)、对象访问属性、对象数据类型以及对象的默认值。根据这些信息,程序CreateMib自动生成相应的通用访问函数代码,从而减少了重复开发工作量,提高了工作效率。
步骤S101中生成的通用函数代码,只是继承了基类里面的方法,完成了访问用户Mib文件管理对象的方法。而要实现对打印机的访问控制,必须修改这些代码,通过打印驱动程序来完成对打印机的访问控制。比如,打印服务器为了实现对打印机状态属性进行管理,必须修改通用函数代码里的set方法,在此方法中调用驱动函数GetPrintStatus来获取打印机的当前状态,然后将该状态值设置到Mib库中。用户想获取当前的打印机状态,就可以直接调用get_request方法从MIB库中得到当前打印机的状态,不需要每次通过驱动函数来获取打印机的状态。
建立步骤S103中所述主程序模块的流程主要包括:
a)初始化SNMP:创建类SNMPx的一个实例;
b)创建MIB:创建类MIB的一个实例,保存所有的MIB信息,并分发SNMP请求;
c)注册请求列表(RequestList):创建类RequestList的一个实例,并对步骤S102中生成的MIB管理模块进行注册;
d)初始化RequestList:Request List需要SNMP消息处理部件来接收和发送SNMP消息,因此,需要把步骤S101中的MIB管理模块(SNMP消息处理部件)进行注册;
e)添加MIB对象:以组(Group)为单位,根据实际需要,添加所有的MIB对象;
f)初始化MIB:从磁盘上加载MIB数据,并用这些数据初始化MIB对象;
g)初始化陷阱(Trap)配置:从配置信息库(即MIB库)中读取信息,初始化Trap配置。
h)主循环:负责处理进入的请求、监测打印机以及升级MIB库中的管理信息等。
下面实现获取打印机状态为例,具体说明本发明实施例是如何实现的。
参见图2,为了实现获取打印机状态,本发明实施例提供的方法包括:
S201、确定需要执行获取打印机状态操作的OID和相关属性。
例如,执行获取打印机的状态操作的的OID是1.3.6.1.2.1.25.3.2.1.5.1,该对象是只读属性。
S202、利用CreateMib工具,根据MIB文件信息自动生成通用访问函数代码,设置相应的信息。
通用访问函数代码的生成规则是根据描述信息生成子类。例如,描述信息为PrtDeviceStatus,则生成CPrtDeviceStatus子类,该子类继承自Agent++的MibLeaf类。如果该对象为只读,则生成的主要方法有构造函数、虚析构函数、派生的get_request函数、派生的clone函数。如果对象为可读可写,则生成的方法主要有构造函数、虚析构函数、派生clone函数、派生get_request函数、派生set_state函数、派生set函数等。这些方法派生自基类Agent++里的方法,完成了对Mib文件管理信息的访问。
S203、修改通用访问函数代码,实现对打印设备的访问控制。
要获取打印机信息需要修改通用函数里的get_request方法。要设置打印机参数,则需要修改set方法。本实施例中需要获取打印机的状态,则修改步骤S202中生成的CPrtDeviceStatus类的get_request函数,调用设备相关的打印驱动程序,获取打印机的状态。假如,获取设备状态的驱动函数为GetDevStatus,则在get_request函数中调用GetDevStatus函数获取打印机设备状态返回到打印服务器。
S204、生成主程序,连接Agent++和SNMP++类库,生成SNMP代理。
运行此代理服务,就可以响应远端管理站发来的SNMP操作请求和向管理站发送告警消息。
S205、打印服务端程序通过步骤S204中生成的SNMP代理获取相应的打印机状态信息。参见图3,具体包括:
S301、创建SNMP类的一个实例。
S302、判断是否实例化成功,如果是,则执行步骤S304;否则,执行步骤S303。
S303、返回空字符串,表明获取信息失败。
S304、创建协议数据单元(PDU,Protocol Data Unit)对象的一个实例,PDU对象是管理端和代理端进行通讯的基本单元,该实例是从管理端发往代理端的。
S305、实例化变量绑定(Vb,Variable Binding)对象。Vb对象由一个OID及SMI的value组和而成。
S306、执行Vb对象的set_oid方法。
S307、增加Vb对象到PDU对象。
S308、实例化Ctarget对象,并设置代理端的IP信息。
S309、执行SNMP.get方法,获取从代理端返回的PDU对象。
S310、判断是否执行成功,如果是,则执行步骤S311;否则,执行步骤S303。
S311、执行PDU的get_Vb方法,获取从代理端返回的Vb对象值。
S312、执行Vb的get_printable_value方法,获取Vb对象所包含的值。
S313、返回get_printable_value的值。
下面介绍一下本发明实施例提供的装置。
本发明实施例提供的建立打印机的简单网络管理协议代理的装置包括:
建立通用访问函数代码单元,用于将用户输入的管理信息库文件信息翻译成通用访问函数代码;
修改通用访问函数代码单元,用于根据用户的需要,将用户设置的特定代码加入所述通用访问函数代码;
生成SNMP代理单元,用于根据所述修改通用访问函数代码单元修改后的通用访问函数代码,生成打印机的简单网络管理协议代理。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种建立打印机的简单网络管理协议代理的方法,其特征在于,该方法包括:
将用户输入的管理信息库文件信息翻译成通用访问函数代码;
根据用户的需要,将用户设置的特定代码加入所述通用访问函数代码;
根据所述通用访问函数代码,生成打印机的简单网络管理协议代理。
2.根据权利要求1所述的方法,其特征在于,所述管理信息库文件信息包括:
对象描述、对象标志符、对象访问属性、对象数据类型以及对象的默认值。
3.根据权利要求2所述的方法,其特征在于,所述对象访问属性包括:
NotAccess、ReadOnly、ReadWrite、ReadCreate。
4.根据权利要求2或3所述的方法,其特征在于,所述对象数据类型包括:
OctectStr、Uint32、TimeTicks、Counter32、Gauge32、Int32、Counter64。
5.根据权利要求1所述的方法,其特征在于,所述通用访问函数代码包括.h和.cpp文件。
6.根据权利要求1所述的方法,其特征在于,所述通用访问函数代码为Agent++开发包API使用的通用访问函数代码。
7.根据权利要求1所述的方法,其特征在于,所述通用访问函数代码由Agent++类库中所包含的基类的派生类组成,包括get_request、get_state、set_state、set派生函数。
8.根据权利要求1所述的方法,其特征在于,所述用户设置的特定代码为访问特定的设备管理信息的代码。
9.根据权利要求1所述的方法,其特征在于,根据所述通用访问函数代码,生成打印机的简单网络管理协议代理的步骤包括:
预先按主程序模版编写主程序;
将所述通用访问函数代码、SNMP++类库、Agent++类库以及所述主程序组织在一起,生成打印机的简单网络管理协议代理。
10.一种建立打印机SNMP代理的装置,其特征在于,该装置包括:
建立通用访问函数代码单元,用于将用户输入的管理信息库文件信息翻译成通用访问函数代码;
修改通用访问函数代码单元,用于根据用户的需要,将用户设置的特定代码加入所述通用访问函数代码;
生成SNMP代理单元,用于根据所述通用访问函数代码,生成打印机的简单网络管理协议代理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101012335A CN101521592B (zh) | 2008-02-29 | 2008-02-29 | 一种建立打印机snmp代理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101012335A CN101521592B (zh) | 2008-02-29 | 2008-02-29 | 一种建立打印机snmp代理的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101521592A CN101521592A (zh) | 2009-09-02 |
CN101521592B true CN101521592B (zh) | 2011-05-04 |
Family
ID=41081977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101012335A Expired - Fee Related CN101521592B (zh) | 2008-02-29 | 2008-02-29 | 一种建立打印机snmp代理的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101521592B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577166B (zh) * | 2012-07-25 | 2017-11-14 | 上海斐讯数据通信技术有限公司 | Omci编码方法及其装置 |
CN105634800B (zh) * | 2015-12-25 | 2018-09-11 | 北京时代民芯科技有限公司 | 一种基于SNMP和SQLite的数据存储维护方法 |
CN109560958B (zh) * | 2017-09-27 | 2022-02-18 | 精工爱普生株式会社 | 设备管理系统、装置和方法、中继管理装置以及记录介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1993689A (zh) * | 2004-06-23 | 2007-07-04 | 诺基亚公司 | 用于选择snmp通信版本的系统和方法 |
-
2008
- 2008-02-29 CN CN2008101012335A patent/CN101521592B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1993689A (zh) * | 2004-06-23 | 2007-07-04 | 诺基亚公司 | 用于选择snmp通信版本的系统和方法 |
Non-Patent Citations (1)
Title |
---|
JP特开2007-188298A 2007.07.26 |
Also Published As
Publication number | Publication date |
---|---|
CN101521592A (zh) | 2009-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Issarny et al. | A perspective on the future of middleware-based software engineering | |
Yu et al. | A microservice based reference architecture model in the context of enterprise architecture | |
US8789053B2 (en) | Task execution and delegation by autonomous mobile agents based on intent knowledge base | |
US8479153B2 (en) | Abstracting transformation for model driven architecture | |
CA2511912A1 (en) | System and method for building and execution of platform-neutral generic services' client applications | |
CN103843308A (zh) | 跨越多个计算设备分布的应用的执行 | |
US20190089749A1 (en) | Method for providing wireless application privilege management | |
CN104579792A (zh) | 多适配方式实现多种类型虚拟资源集中管理架构及方法 | |
KR100880536B1 (ko) | 이기종 컴퓨팅 및 서비스 통합을 위한 오픈 프레임워크시스템 | |
CN101976199A (zh) | 面向对象的中间件分布式系统开发平台 | |
US8589956B2 (en) | Method and apparatus for providing application with interface to composite network service | |
US8387039B2 (en) | System and method for customized provisioning of application content | |
US20210034338A1 (en) | Communications Enablement Platform, System, and Method | |
US20060020948A1 (en) | Real-time multi-modal business transformation interaction | |
CN110321236B (zh) | 一种基于OpenDDS的远程方法调用实现方法 | |
CN101521592B (zh) | 一种建立打印机snmp代理的方法及装置 | |
Hackmann et al. | Extending BPEL for interoperable pervasive computing | |
CN102904739B (zh) | 一种实现事件转发的方法及通用信息模型cim服务器 | |
Sefid‐Dashti et al. | A reference architecture for mobile SOA | |
Filippone et al. | Synthesis of context‐aware business‐to‐business processes for location‐based services through choreographies | |
Elsayed et al. | Appraisal and analysis of various self-adaptive web service composition approaches | |
Chihani et al. | Programmable context awareness framework | |
Lillo et al. | An ECA-based semantic architecture for IoT building automation systems | |
van Gurp et al. | Service grid variability realization | |
van der Meer et al. | Ubiquitous Smart Space Management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110504 Termination date: 20190228 |