当前位置:文档之家› SNMP协议运用在发现打印机设备

SNMP协议运用在发现打印机设备

SNMP协议概念SNMP(简单网络管理协议)是目前在计算机网络中用的最广泛的网络管理协议,该协议是基于TCP/IP的网管标准,它包括协议本身、数据库的定义和相关概念。

可管理对象包括主句、打印机、交换机等。

SNMP此协议管理被管理设备和服务之间的通信,它被设计成一个轮询协议,使用一组简单的命令,设置和检索管理信息库(MIB)中的对象值。

管理器发送的SNMP信息保存在UDP(无连接协议)数据报中,并且通过IP路由,因而,使得该代理和管理器驻留在不同的子网上,彼此之间也能通信。

SNMP安装和配置(win 10 为例)1、安装组件1)在本地主机上启动SNMP服务并配置共同体:开始(右击)—》控制面板—》程序—》启动或关闭windows 功能2)查看SNMP组件是否安装成功:开始(右击)—》控制面板—》系统与安全—》管理工具—》服务,服务列表中会出现“SNMP Service”服务2、配置SNMP服务1)设置SNMP Service属性打开“服务”,选择“SNMP Service”,查看“属性”页面,选择“安全”标签页,添加“public”只读团体,并且选择“接收来自任何主机的SNMP数据包”。

2)重新启动SNMP服务3、查看端口是否开启选择“开始”——“运行”——输入“netstat -a -n”,按下回车出现结果,UDP 161 snmp UDP 162 snmptrap 两个snmp端口等,注意SNMP使用的是UDP 协议SNMP报文Snmp定义了5种数据协议单元(PDU,也就是5种报文):1)get - request操作:从代理进程处提取一个或多个参数值。

2)get - next - request 操作:从代理进程处提取一个或多个参数的下一个参数值。

3)Set-request 操作:设置代理进程的一个或多个参数值。

4)Get - response 操作:由代理进程发出的一个或多个参数值。

5)Trap操作:代理进程主动发出的报文,通知管理进程有事情发生。

前面三种是偶管理进程想代理进程发出的,后两个是代理进程发给管理进程的。

SNMP报文共有三个部分组成,即公共SNMP首部,get/set首部、trap首部,变量绑定(1)SNMP 报文的长度取决域变量的类型和值。

(2) 版本字段为0 ,表示为SNMP V1 。

(3) PDU 为协议数据单元,即分组。

(4)public 。

(5) 对于get 、get-next 和set 操作,请求标识由管理进程设置,然后由代理进程在get-response 中返回。

这个字段的作用是使客户进程(目前是管理进程)能够将服务器进程(即代理进程)发出的响应和客户进程发出的查询进行匹配。

这个字段允许管理进程对一个或多个代理进程发出多个请求,并且从返回的应答中分类。

(6)(7)在get 、get-next 和set 的请求数据报中,包含变量名称和变量值的表,对于get 和get-next 操作,变量值部分被忽略。

SNMP团体名SNMP提供了一个基本级别的安全性,验证SNMP管理器和SNMP代理之间的发送消息,为每个被发送的SNMP消息添加一个组标识符,就可以进行这种验证。

这个标识符就是所谓的SNMP团体名称,所有的SNMP消息必须包含一个团体名称,标准的团体名称是public。

对象标识符(OID)每台SNMP主机(计算机或网络设备)都有一个或多个MIB,含有该主机上被管理对象的信息。

MIB中的每个对象都有一个唯一的标签标识,即所谓的对象标识符(Object Identifier,OID)。

SNMP陷阱当主机上发生预定的事件时,SNMP代理可以产生一则被称作陷阱(trap)的消息。

当代理收到一条含有他没有定义的团体名称的消息时,它将向SNMP管理器发送一条验证陷阱(authentication trap)消息,通知管理器,该主机出现消息验证故障。

SNMP编程1、SNMP数据类型数据类型共分为三大类,即:(1)通用类型(Universal)该类型通常被称为非聚合类型,在SNMP协议中有4种通用数据类型:1)INTEGER: 整型,是-2,147,483,648~2,147,483,647的有符号整数;2)OCTET STRING: 字符串;3)OBJECT IDENTIFIER: 对象标识符;4)NULL: 空值。

(2)通用结构类型(Universal-constructed)结构类型指列表和表格,常被称作聚合类型。

在SNMP协议中主要使用两种结构类型:1)SEQUENCE 用于列表。

这一数据类型与大多数程序设计语言中的“structure”类似。

一个SEQUENCE包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。

2)SEQUENCE OF type 用于表格。

这一数据类型与大多数程序设计语言中的“array”类似。

一个表格包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。

(3)应用类型(application)应用数据类型采用隐式定义,是引用SNMP的简单数据类型来定义的。

主要有6种:1)IpAddress: 以网络序表示的IP地址。

因为它是一个32位的值,所以定义为4个字节;2)network address:网络地址,表示从一个特定协议族中选定的网络地址,SNMPv1仅支持32位IP地址;所以与IpAddress等效;3)counter:计数器是一个非负的整数,它递增至最大值,而后归零。

SNMPv1中定义的计数器是32位的,即最大值为4,294,967,295;4)Gauge :也是一个非负整数,它可以递增或递减,但达到最大值时保持在最大值,最大值为2^32-1;5)time ticks:是一个时间单位,表示以0.01秒为单位计算的时间;6)opaque:表示用于传递任意信息串的任意编码格式,它与SMI使用的严格数据输入格式不同。

2、开源工具开源包:snmpget使用SNMP4J框架,snmpwalk使用Java Package开源包,下载地址分别为:/html/download.html/people/sevy/snmp/3、信息获取方式在获取到被管理设备的团体名(community)和IP后,输入相应的对象标识符(OID)获取到被管理设备相关的信息,通过snmpwalk函数进行对被管理设备进行获取或设置信息,snmpwalk具体格式如下:snmpwalk -v 1或2c(代表SNMP版本) -c community IP地址OID(对象标示符)Java相关代码详见:/davebobo/article/details/51308601SNMP刺探信息工具1、Snmpwalksnmpwalk是SNMP的一个工具,它使用SNMP的GETNEXT请求查询指定OID(SNMP协议中的对象标识)入口的所有OID树信息,并显示给用户。

通过snmpwalk也可以查看支持SNMP 协议(可网管)的设备的一些其他信息,比如cisco交换机或路由器IP地址、内存使用率等,也可用来协助开发SNMP功能。

Windows下安装net-snmp进入net-snmp官网/download.html 下载net-snmp-5.6.1.1-1.x86.exe工具进行安装Snmpwalk的使用方法snmpwalk使用方法很简单,如下:snmpwalk -v 1或2c(代表SNMP版本) -c SNMP密码IP地址OID(对象标示符)–v:指定snmp的版本, 1或者2,该参数必须有。

–c:指定连接设备SNMP读密码,该参数必须有。

IP:指定要walk的设备的IP地址,该参数必须有。

OID:代表要获取设备的指标oid,该参数不是必须的。

例:获取windows系统进程数snmpwalk -v 1 -c public 192.168.1.200 .1.3.6.1.2.1.25.1.6这条命令的意思是:使用v1版本,共同体为public,来对192.168.1.200的.1.3.6.1.2.1.25.1.6分支进行walk。

SNMP与打印机相关的基础的OID及其数据结构.1.3.6.1.2.1.25.3.5.1.1.1 hrPrinterStatus 得到打印机的当前状态。

SYNTAX INTEGER {other(1),unknown(2),idle(3),printing(4),warmup(5)}说明:当打印机状态处于idle(1), printing(2), or warmup(3)状态时,打印机设备应该运行或者警告,当处于unknown状态时,设备状态则处于未知。

1.3.6.1.2.1.25.3.5.1.2hrPrinterDetectedErrorState 检测打印机错误状态。

说明:错误状态由8位字节的位进行描述,具体定义为下:Condition Bit # hrDeviceStatuslowPaper 0 warning(3)noPaper 1 down(5)lowToner 2 warning(3)noToner 3 down(5)doorOpen 4 down(5)jammed 5 down(5)offline 6 down(5)serviceRequested 7 warning(3).1.3.6.1.2.1.43.12.1.1.3prtMarkerColorantRole 得到打印机色剂的类型。

SYNTAX INTEGER { -- Colorant Roleother(1),process(3),spot(4)}.1.3.6.1.2.1.43.12.1.1.4prtMarkerColorantValue 得到打印机色剂的值。

SYNTAX OCTET STRING (SIZE(0..63)).1.3.6.1.2.1.43.12.1.1.5 prtMarkerColorantTonality 得到打印机色剂的色调。

SYNTAX Integer32.1.3.6.1.2.1.43.13.4.1.9 prtMediaPathType得到媒介路径的种类。

SYNTAX INTEGER {other(1),unknown(2),longEdgeBindingDuplex(3),shortEdgeBindingDuplex(4),simplex(5)}.1.3.6.1.2.1.43.13.4.1.10prtMediaPathDescription 得到媒介路径的描述。

SYNTAX OCTET STRING (SIZE(0..255)).1.3.6.1.2.1.43.13.4.1.11prtMediaPathStatus 得到媒介路径的状态。

相关主题