SNMP协议运用在发现打印机设备.docx
- 文档编号:23797858
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:16
- 大小:1.27MB
SNMP协议运用在发现打印机设备.docx
《SNMP协议运用在发现打印机设备.docx》由会员分享,可在线阅读,更多相关《SNMP协议运用在发现打印机设备.docx(16页珍藏版)》请在冰豆网上搜索。
SNMP协议运用在发现打印机设备
SNMP协议
概念
SNMP(简单网络管理协议)是目前在计算机网络中用的最广泛的网络管理协议,该协议是基于TCP/IP的网管标准,它包括协议本身、数据库的定义和相关概念。
可管理对象包括主句、打印机、交换机等。
SNMP此协议管理被管理设备和服务之间的通信,它被设计成一个轮询协议,使用一组简单的命令,设置和检索管理信息库(MIB)中的对象值。
管理器发送的SNMP信息保存在UDP(无连接协议)数据报中,并且通过IP路由,因而,使得该代理和管理器驻留在不同的子网上,彼此之间也能通信。
SNMP安装和配置(win10为例)
1、安装组件
1)在本地主机上启动SNMP服务并配置共同体:
开始(右击)—》控制面板—》程序—》启动或关闭windows功能
2)查看SNMP组件是否安装成功:
开始(右击)—》控制面板—》系统与安全—》管理工具—》服务,服务列表中会出现“SNMPService”服务
2、配置SNMP服务
1)设置SNMPService属性
打开“服务”,选择“SNMPService”,查看“属性”页面,选择“安全”标签页,添加“public”只读团体,并且选择“接收来自任何主机的SNMP数据包”。
2)重新启动SNMP服务
3、查看端口是否开启
选择“开始”——“运行”——输入“netstat-a-n”,按下回车
出现结果,UDP161snmpUDP162snmptrap两个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,表示为SNMPV1。
(3)PDU为协议数据单元,即分组。
PDU类型
名称
0
Get-request
1
Get-next-request
2
Get-response
3
Set-request
4
Trap
(4)共同体为一个字符串,这是管理进程和代理进程之间的口令,是明文格式,默认为public。
(5)对于get、get-next和set操作,请求标识由管理进程设置,然后由代理进程在get-response中返回。
这个字段的作用是使客户进程(目前是管理进程)能够将服务器进程(即代理进程)发出的响应和客户进程发出的查询进行匹配。
这个字段允许管理进程对一个或多个代理进程发出多个请求,并且从返回的应答中分类。
(6)差错状态字段是一个整数,由代理进程设置,指明有错误发生。
差错状态
名称
描述
0
NoError
没有错误
1
TooBig
代理进程无法把响应放在一个SNMP消息中发送
2
NoSuchName
操作一个不存在的变量
3
BadValue
Set操作的值或语法有错误
4
ReadOnly
管理进程试图改变一个只读变量
5
genErr
其他错误
(7)在get、get-next和set的请求数据报中,包含变量名称和变量值的表,对于get和get-next操作,变量值部分被忽略。
SNMP团体名
SNMP提供了一个基本级别的安全性,验证SNMP管理器和SNMP代理之间的发送消息,为每个被发送的SNMP消息添加一个组标识符,就可以进行这种验证。
这个标识符就是所谓的SNMP团体名称,所有的SNMP消息必须包含一个团体名称,标准的团体名称是public。
对象标识符(OID)
每台SNMP主机(计算机或网络设备)都有一个或多个MIB,含有该主机上被管理对象的信息。
MIB中的每个对象都有一个唯一的标签标识,即所谓的对象标识符(ObjectIdentifier,OID)。
SNMP陷阱
当主机上发生预定的事件时,SNMP代理可以产生一则被称作陷阱(trap)的消息。
当代理收到一条含有他没有定义的团体名称的消息时,它将向SNMP管理器发送一条验证陷阱(authenticationtrap)消息,通知管理器,该主机出现消息验证故障。
SNMP编程
1、SNMP数据类型
数据类型共分为三大类,即:
(1)通用类型(Universal)
该类型通常被称为非聚合类型,在SNMP协议中有4种通用数据类型:
1)INTEGER:
整型,是-2,147,483,648~2,147,483,647的有符号整数;
2)OCTETSTRING:
字符串;
3)OBJECTIDENTIFIER:
对象标识符;
4)NULL:
空值。
(2)通用结构类型(Universal-constructed)
结构类型指列表和表格,常被称作聚合类型。
在SNMP协议中主要使用两种结构类型:
1)SEQUENCE用于列表。
这一数据类型与大多数程序设计语言中的“structure”类似。
一个SEQUENCE包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。
2)SEQUENCEOFtype用于表格。
这一数据类型与大多数程序设计语言中的“array”类似。
一个表格包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。
(3)应用类型(application)
应用数据类型采用隐式定义,是引用SNMP的简单数据类型来定义的。
主要有6种:
1)IpAddress:
以网络序表示的IP地址。
因为它是一个32位的值,所以定义为4个字节;
2)networkaddress:
网络地址,表示从一个特定协议族中选定的网络地址,SNMPv1仅支持32位IP地址;所以与IpAddress等效;
3)counter:
计数器是一个非负的整数,它递增至最大值,而后归零。
SNMPv1中定义的计数器是32位的,即最大值为4,294,967,295;
4)Gauge:
也是一个非负整数,它可以递增或递减,但达到最大值时保持在最大值,最大值为2^32-1;
5)timeticks:
是一个时间单位,表示以0.01秒为单位计算的时间;
6)opaque:
表示用于传递任意信息串的任意编码格式,它与SMI使用的严格数据输入格式不同。
2、开源工具
开源包:
snmpget使用SNMP4J框架,snmpwalk使用JavaPackage开源包,下载地址分别为:
http:
//www.snmp4j.org/html/download.html
http:
//gicl.cs.drexel.edu/people/sevy/snmp/
3、信息获取方式
在获取到被管理设备的团体名(community)和IP后,输入相应的对象标识符(OID)获取到被管理设备相关的信息,通过snmpwalk函数进行对被管理设备进行获取或设置信息,snmpwalk具体格式如下:
snmpwalk-v1或2c(代表SNMP版本)-ccommunityIP地址OID(对象标示符)
Java相关代码详见:
SNMP刺探信息工具
1、Snmpwalk
snmpwalk是SNMP的一个工具,它使用SNMP的GETNEXT请求查询指定OID(SNMP协议中的对象标识)入口的所有OID树信息,并显示给用户。
通过snmpwalk也可以查看支持SNMP协议(可网管)的设备的一些其他信息,比如cisco交换机或路由器IP地址、内存使用率等,也可用来协助开发SNMP功能。
Windows下安装net-snmp
进入net-snmp官网-snmp.org/download.html下载net-snmp-5.6.1.1-1.x86.exe工具进行安装
Snmpwalk的使用方法
snmpwalk使用方法很简单,如下:
snmpwalk-v1或2c(代表SNMP版本)-cSNMP密码IP地址OID(对象标示符)
–v:
指定snmp的版本,1或者2,该参数必须有。
–c:
指定连接设备SNMP读密码,该参数必须有。
IP:
指定要walk的设备的IP地址,该参数必须有。
OID:
代表要获取设备的指标oid,该参数不是必须的。
例:
获取windows系统进程数
snmpwalk-v1-cpublic192.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.1hrPrinterStatus得到打印机的当前状态。
SYNTAXINTEGER{
other
(1),
unknown
(2),
idle(3),
printing(4),
warmup(5)
}
说明:
当打印机状态处于idle
(1),printing
(2),orwarmup(3)状态时,打印机设备应该运行或者警告,当处于unknown状态时,设备状态则处于未知。
1.3.6.1.2.1.25.3.5.1.2hrPrinterDetectedErrorState检测打印机错误状态。
说明:
错误状态由8位字节的位进行描述,具体定义为下:
ConditionBit#hrDeviceStatus
lowPaper0warning(3)
noPaper1down(5)
lowToner2warning(3)
noToner3down(5)
doorOpen4down(5)
jammed5down(5)
offline6down(5)
serviceRequested7warning(3)
.1.3.6.1.2.1.43.12.1.1.3prtMarkerColorantRole得到打印机色剂的类型。
SYNTAXINTEGER{--ColorantRole
other
(1),
process(3),
spot(4)
}
.1.3.6.1.2.1.43.12.1.1.4prtMarkerColorantValue得到打印机色剂的值。
SYNTAXOCTETSTRING(SIZE(0..63))
.1.3.6.1.2.1.43.12.1.1.5prtMarkerColorantTonality得到打印机色剂的色调。
SYNTAXInteger32
.1.3.6.1.2.1.43.13.4.1.9prtMediaPathType得到媒介路径的种类。
SYNTAXINTEGER{
other
(1),
unknown
(2),
longEdgeBindingDuplex(3),
shortEdgeBindingDuplex(4),
simplex(5)
}
.1.3.6.1.2.1.43.13.4.1.10prtMediaPathDescription得到媒介路径的描述。
SYNTAXOCTETSTRING(SIZE(0..255))
.1.3.6.1.2.1.43.13.4.1.11prtMediaPathStatus得到媒介路径的状态。
SYNTAXSubUnitStatus
.1.3.6.1.2.1.43.5.1.1.1prtGeneralConfigChanges常规配置更改。
SYNTAXCounter32
.1.3.6.1.2.1.43.5.1.1.2prtGeneralCurrentLocalization打印机当前本地化
SYNTAXInteger32(1..65535)
.1.3.6.1.2.1.43.5.1.1.3prtGeneralReset打印机重置
SYNTAXINTEGER{
notResetting(3),
powerCycleReset(4),--ColdStart
resetToNVRAM(5),--WarmStart
resetToFactoryDefaults(6)--Resetcontentsof
--NVRAMtofactorydefaults
}
.1.3.6.1.2.1.43.5.1.1.4prtGeneralCurrentOperator打印机当前操作
SYNTAXOCTETSTRING(SIZE(0..255))
.1.3.6.1.2.1.43.5.1.1.6prtInputDefaultIndex输入默认指数
SYNTAXinterger32
.1.3.6.1.2.1.43.5.1.1.7prtOutputDefaultIndex输出默认指数
SYNTAXinterger32
.1.3.6.1.2.1.43.6.1.1.2prtCoverDescription打印机外壳描述
SYNTAXOCTETSTRING(SIZE(0..255))
.1.3.6.1.2.1.43.6.1.1.3prtCoverStatus打印机外壳状态
SYNTAXINTEGER{
other
(1),
doorOpen(3),
doorClosed(4),
interlockOpen(5),
interlockClosed(6)
}
.1.3.6.1.2.1.43.5.1.1.7.1prtOutputIndex输出索引
SYNTAXinterger32
.1.3.6.1.2.1.43.5.1.1.7.2prtOutputType输出类型
SYNTAXINTEGER{
other
(1),
unknown
(2),
removableBin(3),
unRemovableBin(4),
continuousRollDevice(5),
mailBox(6),
continuousFanFold(7)
}
.1.3.6.1.2.1.43.5.1.1.7.3prtOutputCapacityUnit输出容量单位
SYNTAXCapacityUnit
.1.3.6.1.2.1.43.5.1.1.7.4prtOutputMaxCapacity输出最大容量
SYNTAXInteger32
.1.3.6.1.2.1.43.5.1.1.7.5prtOutputRemainingCapacity输出剩余容量
SYNTAXInteger32
.1.3.6.1.2.1.43.5.1.1.7.6prtOutputStatus输出状态
SYNTAXSubUnitStatus
.1.3.6.1.2.1.43.5.1.1.7.7prtOutputName输出打印机名称
SYNTAXOCTETSTRING(SIZE(0..63))
.1.3.6.1.2.1.43.5.1.1.7.8prtOutputVendorName输出供应商名称
SYNTAXOCTETSTRING(SIZE(0..63))
.1.3.6.1.2.1.43.5.1.1.7.9prtOutputModel输出打印机模型
SYNTAXOCTETSTRING(SIZE(0..63))
.1.3.6.1.2.1.43.5.1.1.7.10prtOutputVersion输出打印机版本
SYNTAXOCTETSTRING(SIZE(0..63))
.1.3.6.1.2.1.43.5.1.1.7.11prtOutputSerialNumber输出打印机序列号
SYNTAXOCTETSTRING(SIZE(0..63))
.1.3.6.1.2.1.43.5.1.1.7.12prtOutputDescription输出打印机描述
SYNTAXOCTETSTRING(SIZE(0..255))
.1.3.6.1.2.1.43.5.1.1.7.13prtOutputSecurity输出打印机安全性
SYNTAXPresentOnOff
.1.3.6.1.2.1.43.5.1.1.7.14prtOutputDimUnit输出打印机尺寸单位
SYNTAXMediaUnit
.1.3.6.1.2.1.43.5.1.1.7.15prtOutputMaxDimFeedDir输出打印机最大尺寸单位
SYNTAXInteger32
.1.3.6.1.2.1.43.5.1.1.7.16prtOutputMaxDimXFeedDir输出打印机X轴最大尺寸单位
SYNTAXInteger32
.1.3.6.1.2.1.43.5.1.1.7.17prtOutputMinDimFeedDir输出打印机最小尺寸单位
SYNTAXInteger32
.1.3.6.1.2.1.43.5.1.1.7.18prtOutputMinDimXFeedDir输出打印机X轴最小尺寸单位
SYNTAXInteger32
.1.3.6.1.2.1.43.5.1.1.7.19prtOutputStackingOrder输出堆叠顺序
SYNTAXINTEGER{
unknown
(2),
firstToLast(3),
lastToFirst(4)
}
.1.3.6.1.2.1.43.5.1.1.7.20prtOutputPageDeliveryOrientation输出打印递送方向
SYNTAXINTEGER{
faceUp(3),
faceDown(4)
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SNMP 协议 运用 发现 打印机 设备