![通过 SNMP HP Laserjet 查询总页数](https://linux22.com/image/515660/%E9%80%9A%E8%BF%87%20SNMP%20HP%20Laserjet%20%E6%9F%A5%E8%AF%A2%E6%80%BB%E9%A1%B5%E6%95%B0.png)
我被要求获取我们工作中使用的 100 多台打印机的总页数。它们全都是 HP Laser 或 Business Jet,绝大多数都通过某种形式的 HP JetDirect 网卡/交换机连接。经过数小时的输入 IP 地址并将相关数字复制并粘贴到 Excel 中后,现在我每周都被要求这样做。这让我想到一定有一种更简单的方法,作为一名 IT 专业人士,我肯定可以找到一些节省时间的方法来解决这个问题。
可以这么说,在尝试了一天左右的时间让 SNMP 为我工作之后,我现在感觉不太专业了!
据我所知,第一件事是在打印机上启用 SNMP。完成。接下来我需要一些东西来查询 SNMP 位。我决定使用开源和免费,有人推荐 net-snmp 作为一个不错的工具(我本来想将打印机作为 SolarWinds 中的节点添加,但我们的许可证显然有点紧张)。接下来我需要 MIB 的名称。为此,我相信 HP-LASERJET-COMMON-MIB 中包含正确的信息。下载此文件并添加到 net-snmp。现在我需要 OID,经过一番搜索,我认为它是打印介质单工计数(我们没有双面打印机,至少我们对此不感兴趣)。运行以下命令会产生以下令人沮丧的输出:
snmpget -v 2c -c public 10.168.5.1 HP-LASERJET-COMMON-MIB:.1.3.6.1.2.1.1.16.1.1.1
(OID 源自运行:
snmptranslate -IR -On printed-media-simplex-count
Unlinked OID in HP-LASERJET-COMMON-MIB: hp ::= { enterprises 11 }
Undefined identifier: enterprises near line 3 of C:/usr/share/snmp/mibs/HP-LASER
JET-COMMON-MIB..txt
.1.3.6.1.2.1.1.16.1.1.1 )
Unlinked OID in HP-LASERJET-COMMON-MIB: hp ::= { enterprises 11 }
Undefined identifier: enterprises near line 3 of C:/usr/share/snmp/mibs/HP-LASER
JET-COMMON-MIB..txt
HP-LASERJET-COMMON-MIB:.1.3.6.1.2.1.1.16.1.1.1:
我这样做是不是完全找错了方向?我的目的是编写脚本,将所有打印机的 IP 地址输出到一个文件中,然后将其放入 Excel 中,以便我的领主和主人在闲暇时消化。我感觉我要么使用了错误的 MIB,要么使用了所述 MIB 中的错误 OID(或两者兼而有之)。有人能给我一些建议吗?或者我应该放弃,然后返回到单独导航每个打印机网页(希望不会)。
答案1
这很奇怪 - 我以为这些信息是通过 SNMP 公开的。但是,对我们的一台 P4515 进行快速 snmpwalk 只显示了使用当前安装的定影器打印的页数。要查看通过 snmp 公开的所有信息,我执行了以下操作:
snmpwalk -Cc -v 1 -c public ipaddress
如果当前安装的定影器上打印页面的 OID 有任何用途,则为:
2.43.10.2.1.4.1.1
答案2
标准“总页数”位于 1.3.6.1.2.1.43.10.2.1.4.1.1
不同型号使用不同的 OID 来显示详细信息,例如传真/复印/打印/双面/彩色/黑白/的页数......
答案3
恐怕我无法帮助解决 MIB 问题,但您可以使用 PowerShell 轻松从打印机的网页上获取值。应该可以修改下面的示例来执行您需要的操作:
如果可以的话,Perl/Python 也有 Web 抓取模块。