【问题标题】:Get printer status with SNMP using Pysnmp使用 Pysnmp 通过 SNMP 获取打印机状态
【发布时间】: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


    【解决方案1】:

    通常情况下,您需要特定于打印机的 MIB 文件。例如,您的链接中我办公室的打印机似乎不支持这两种 oid。您还可以使用snmpwalk 来获取打印机上可用的 oid 和值,如果您以某种方式了解您需要哪些值,您可以将它用于您的打印机的特定实例。

    【讨论】:

    • 好的,所以 snmpwalk 可以列出我打印机的 OID 吗?
    • 是的,但是没有 MIB 文件你只能猜测 oid 的含义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多