0

我正在为我们所有的打印机(我们是一家拥有大量工业打印机的打印公司)制定一个概览程序。与打印机通信的唯一方法是通过 SNMP。因为我没有得到任何 SNMP MIB 的文档(这很差,因为我们使用的是我们自己构建的机器),所以我在过去几天搜索了任何可用的 OID 字符串,这些字符串与我期望的结果一致。到目前为止,其余的都是逆向工程。

我发现了许多有用的 OID,并且我几乎完成了 DLL,我正在研究(与 WinAPI wsnmp32.dll 合作),但现在我被困在 JobQueue OID 上。

所以现在我的问题 :) 以您的信息为例:JobQueue 的 ID 是 1202,Job ID 是 5495。如果我想获取应该在此作业中打印的页面,我必须调用 OID: .1.3.6.1.4.1.2699.1.1.1.3.1.1.7.1202.5495

到目前为止,一切都很好。如果我使用 snmpget 执行此操作,我将得到“无此类实例”的返回。但肯定有一个例子。我肯定知道,因为我之前在实例上调用 snmpgetnext(使用 OID .1.3.6.1.4.1.2699.1.1.1.3.1.1.7.1202.5494),我得到一个整数值 9002,这是正确的,因为这是该作业中必须打印的页数。该实例正在工作并返回一个值......但前提是我之前在实例上调用了 snmpgetnext。直接在 5495 上调用 snmpget 将不起作用。

关于调用 snmpget 我有什么误解,所以我做错了吗?希望任何人都可以帮助我:)

此致

4

1 回答 1

1

如果您确定实例在 WALK 结果中可见,但无法通过 GET 操作访问。有可能的原因,

  • 这个代理有问题。
  • 执行 WALK 时,作业仍在运行,但执行 GET 时,作业完成并从表中删除该行。此表是动态的,因此其内容会随时间而变化。

要确认您遇到了哪些情况,只需再执行一次 WALK 以查看该行是否存在于 GET 之后。

于 2013-10-10T07:02:03.163 回答