如何通过SNMP获取Lexmark MS826打印机的实际墨粉余量数值?
获取打印机墨粉余量的SNMP方法
你当前使用的OID 1.3.6.1.2.1.43.11.1.1.6 是Printer-MIB中的prtMarkerSuppliesDescription,仅用于返回耗材的名称描述,自然拿不到余量数值。要获取实际余量,需要使用Printer-MIB中对应的数值型OID:
- 当前余量值:
1.3.6.1.2.1.43.11.1.1.9(对应prtMarkerSuppliesLevel)
这个OID返回的数值可能是剩余百分比,也可能是剩余可打印页数,具体取决于打印机厂商的实现。 - 最大容量值:
1.3.6.1.2.1.43.11.1.1.8(对应prtMarkerSuppliesMaxCapacity)
结合这个值和当前余量,你可以计算出剩余比例:(当前余量 / 最大容量) * 100%
实操示例
用snmpwalk查询余量:
snmpwalk -v2c -c <你的社区字符串> <打印机IP> 1.3.6.1.2.1.43.11.1.1.9
查询结果的索引(比如.1、.2)会和你之前查询名称的OID索引一一对应,比如:
1.3.6.1.2.1.43.11.1.1.6.1.1 = STRING: "Black Toner Cartridge"
1.3.6.1.2.1.43.11.1.1.9.1.1 = INTEGER: 35
上面的结果就表示黑色粉盒剩余35%(或3500页,依打印机而定)。
注意事项
- 部分厂商的打印机可能不严格遵循标准Printer-MIB,会使用私有OID返回余量。如果标准OID无结果,需要查阅对应品牌的官方MIB文档(比如惠普的JetDirect MIB、佳能的Printer MIB)。
- 有些打印机在耗材耗尽或无法检测余量时,会返回
-1(无法获取)或-2(已耗尽)的数值,脚本里要处理这些特殊值。
内容的提问来源于stack exchange,提问作者Mark Wright
相关产品推荐
相关产品推荐

