c# - 处理递增的 SNMP OID?

标签 c# snmp

我正在尝试使用 SNMP 从打印机获取数据。如果我关闭打印机然后再打开,我需要获取 的 OID 是 .1.3.6.1.2.1.43.18.1.1.8.1.1。每次打印机发生“事件”,例如暂停、缺纸或卡纸时,我想要的数据的 OID 都会递增。

例如,我打开打印机并查询 .1.3.6.1.2.1.43.18.1.1.8.1.1.,我得到“暂停”作为值。我取消暂停打印机并从打印机中取出所有纸张,要获得“添加纸张”消息,我必须查询 .1.3.6.1.2.1.43.18.1.1.8.1.2

我不知道这是否是正常的 SNMP 行为,但我想知道人们建议我在这些情况下如何以编程方式获取打印机状态?

最佳答案

是的,您从警报表中检索行是正常的:

看看mib :

enter image description here

mib对应的文本部分为(from RFC 1759):

prtAlertTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PrtAlertEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        ""
    ::= { prtAlert 1 }

prtAlertEntry OBJECT-TYPE
    SYNTAX     PrtAlertEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Entries may exist in the table for each device
        index who's device type is `printer'."
    INDEX  { hrDeviceIndex, prtAlertIndex }
    ::= { prtAlertTable 1 }

PrtAlertEntry ::= SEQUENCE {
    prtAlertIndex               Integer32,
    prtAlertSeverityLevel       INTEGER,
    prtAlertTrainingLevel       INTEGER,
    prtAlertGroup               INTEGER,
    prtAlertGroupIndex          Integer32,
    prtAlertLocation            Integer32,
    prtAlertCode                INTEGER,
    prtAlertDescription         OCTET STRING,
    prtAlertTime                TimeTicks
}

所以 SNMP 的工作方式是给 MIB 的 OID 条目加上行的索引作为后缀。您可以通过 Get-Bulk 获取整个表,但我认为您首先要了解如何检索 SNMP 表。

在您的确切情况下:1.3.6.1.2.1.43.18.1.1.8.1.1 您必须将其解读为:

1.3.6.1.2.1.43.18.1.1.8:prtAlertDescription 后跟

1 : hrDeviceIndex 后跟

1 : 行的 prtAlertIndex。

您可以找到一个名为 snmpsharpnet 的程序集的建议这对于在 .NET 之上使用 SNMP 非常有帮助。

关于c# - 处理递增的 SNMP OID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5966696/

相关文章:

java - 消息处理模型3返回错误: Unknown security name

python - 如何用python在net-snmp中实现mib模块?

c# - 重定向到 ASP.NET 中的其他页面时确认框不起作用

c# - Excel:如果使用绝对路径只能打开文件,为什么?

c# - BufferedGraphics 闪烁

C# MVC Controller 重定向到 Tel、SMS 和 mailto 链接

c# - 无法打开使用 C# 编写的 print to pdf 代码生成的 PDF

azure - SNMP 与 MS Azure 存储

java - 尝试从 GWT 项目调用 SNMP-Get

python - pysnmp 将后缀附加到对象标识