【发布时间】:2016-08-31 09:50:35
【问题描述】:
我尝试使用 SNMP 协议从我的打印机获取状态 问题是,我从未使用过 SNMP,而且我无法理解如何获得我的状态,例如(PAPER OUT、RIBBON OUT 等...)。
我将打印机配置为使用社区名称“public”启用 SNMP 协议
我假设 SNMP 消息在端口 161 上发送
我使用 Pysnmp 是因为我想在我的程序中集成 python 脚本来监听我的打印机并在打印机出现问题时显示状态。
目前我已经尝试过这段代码:
import socket
import random
from struct import pack, unpack
from datetime import datetime as dt
from pysnmp.entity.rfc3413.oneliner import cmdgen
from pysnmp.proto.rfc1902 import Integer, IpAddress, OctetString
ip = '172.20.0.229'
community = 'public'
value = (1,3,6,1,2,1,25,3,5,1,2)
generator = cmdgen.CommandGenerator()
comm_data = cmdgen.CommunityData('server', community, 1) # 1 means version SNMP v2c
transport = cmdgen.UdpTransportTarget((ip, 161))
real_fun = getattr(generator, 'getCmd')
res = (errorIndication, errorStatus, errorIndex, varBinds) \
= real_fun(comm_data, transport, value)
if not errorIndication is None or errorStatus is True:
print "Error: %s %s %s %s" % res
else:
print "%s" % varBinds
IP 地址是我的打印机的 IP 问题在于 OID:我不知道在 OID 字段中输入什么,因为我无法理解 OID 的工作原理。
我找到了这个页面,但我不确定它是否适合所有打印机 ==> click here
【问题讨论】:
标签: python snmp zebra-printers