问题标签 [sharp-snmp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2035 浏览

c# - 使用 C# 创建 SNMP 侦听器(服务器)

我知道可以创建代理并查询启用 SNMP 的设备,但我需要在一台 PC 的不同端口上创建 2 个或多个 SNMP 侦听器,以便一台 PC 可以拥有 SNMP 侦听器。这样我就可以在代理查询时发送自己的消息。至于我的理解,SNMP 使用 UDP,所以在不同端口上监听 UDP 套接字我可以接收请求吗?或者有什么限制吗?

0 投票
2 回答
794 浏览

c# - SNMP VARBIND 值

我不确定在哪里问这个问题。我一直在寻找答案,所以我会尝试在这里提问。

我们有一个通过 SNMP 与我们的设备通信的应用程序。由于 Varbind 值中的值 0x04,我们的 GET 消息正在触发 IPS/IDS 系统警报。

开发人员告诉我 0x04 意味着空,但我找不到任何可以说这是真的。在 Wireshark 跟踪中,这显示为无效。

现在,当我让他们测试在 GET 中将值切换为 0x05 时,IPS/IDS 系统停止发出警报,因为 0x05 是 NULL。

我想找到我可以参考的有效武术。

0 投票
1 回答
931 浏览

c# - SharpSnmpLib | bytes 必须包含 4 或 16 个元素 - 导致此错误的原因是什么?

https://github.com/lextm/sharpsnmplib/blob/master/SharpSnmpLib/IP.cs

我正在使用这个库来从网络打印机中提取一些数据。到目前为止,一切正常,大多数打印机都将我正在寻找的数据返回给我。但是当我收到这个错误时,我没有从打印机收到任何东西,那么是什么导致了这个错误?

0 投票
1 回答
474 浏览

snmp - SNMP 解释 RMON2-MIB 文件的正确方法是什么?

我正在使用sharpsnmplib 开源库来编译MIB 文件并在我的自定义snmp 浏览器中使用它们。问题是Sharpsnmplib 无法编译RMON2-MIB 文件。使用它的后续库也无法编译。事实证明,(第一个)问题与文本(RMON2-MIB.txt)有关:

Sharpsnmplib 的文本约定解释器包含以下文本:

Sharpsnmplib 解释器的源码

RMON2-MIB

RFC 2579

有趣的是,TimeStamp 是 SNMPv2-TC 中定义的文本约定。RMON2-MIB 定义了自己的使用时间戳的文本约定。RMON2-MIB 中还有其他几个文本约定,它们引用了其他 MIB 文件中的文本约定。

因此,如果我做对了,RMON2-MIB 就违反了 RFC2579。但是如果 RMON2-MIB 是主动使用的 MIB 文件,这没有任何意义。

我错过了什么?应该如何正确解释 RMON2-MIB?

0 投票
1 回答
3269 浏览

snmp - 奇怪的 SNMP v3 响应,报告而不是 get-response

通过 SNMP v3 查询 Cisco Call Manager 时出现的奇怪问题。SNMP v2 工作正常。

使用get-next-request时,响应应该是一个get-response,但有时我会得到一个“ report”响应。

报告一个oidoid.get-next-request

如果有趣的话,可以提供来自wireshark的转储。有oid问题的是(电话更新表):

1.3.6.1.4.1.9.9.156.1.2.4.0

通常响应是get-response一个oid类似于:

1.3.6.1.4.1.9.9.156.1.2.4.1.2.580

但时不时地响应是一个“ report”,带有oid

1.3.6.1.6.3.15.1.1.2.0

我的应用程序(.netusing sharpsnmplib)将其作为常规读取,get-response并且感到很困惑。SNMP v3加密和授权似乎都很好。CUCM 10.5sharpsnmplib 7.6

0 投票
1 回答
1015 浏览

c# - 如何为 GET 定义表

我正在为我们的一个 C# 应用程序编写一个代理,该应用程序使用 SharpSnmpLib 通过 SNMP GET 公开各种应用程序属性,过去我已经成功地发送了陷阱并检索了 GET。我能够公开单个属性,但我无法弄清楚如何在我的应用程序中定义一个表。

该表应该为我的应用程序中的流概念的每个实例公开一组 GET 参数(流的数量在启动时是固定的),每个流应该表示为表中的一行。

在 MIB 中定义它很容易,而且我过去已经使用 C++ 库成功定义和实现了这样的表,所以我知道这是可能的。

以下是我在 MIB 中定义应用程序版本的简单 GET 的方式:

在代码中:

这是我正在尝试创建的表的示例 MIB 定义:

在 iReasoning MIB 浏览器中看起来像这样:

截屏

我已经将我认为是“行”的内容定义为派生自的类TableObject

毕竟,我想我的问题是,如何将这些关联到一个表中,该表与表或条目的 OID 一起返回?

我尝试将多个StreamEntry对象添加到 ObjectStore:

有了这个,我只能检索第一个的数据(使用单独的 GET,或在 MIB 浏览器中的 dtStreamEntry 上 WALK)。

0 投票
1 回答
734 浏览

snmp - #SNMP 使用自定义 OID

是否可以在库 #SNMP ( http://sharpsnmplib.codeplex.com/ ) 中使用自定义 OID?如果是这样,如何使用#SNMP 添加/注册自定义 OID 变量/子树,以便可以读取和写入这些变量?

我想扩展/配置代理守护程序 (snmpd),以便它可以读取自定义 OID,例如 iso.org.dod.internet.private.enterprise.XXX (1.3.6.1.4.1.XXX)

出于测试目的,假设将使用“假”OID(类似于 1.3.6.1.4.1.99999.0)。

在#SNMP snmpd 示例代理中需要做什么,以便程序可以读取该 OID 的值(snmpget、snmpgetnext ...)?

根据#SNMP 文档(文档->代理开发),当处理程序尝试执行典型的 SNMP 操作时,它会查看 ObjectStore 对象以定位指定的对象。

那么,为了使用自定义 OID,是否需要将其添加到 ObjectStore?

这是如何添加 OID https://sharpsnmplib.codeplex.com/SourceControl/latest#SharpSnmpLib/Objects的示例吗?

0 投票
2 回答
141 浏览

snmp - 有没有办法知道设备是否在没有凭据的情况下启用了版本 3 的 SNMP?

我需要做一个设备发现,它适用于版本 1,2,因为默认情况下社区名称“公共”帮助我解决这个问题,但对于版本 3,需要凭据,你知道任何工具或方法来知道吗?

0 投票
2 回答
559 浏览

c# - SharpSNMP 最大重复次数增加导致通过 GPRS 的缓冲区大小异常

我正在尝试将 SNMP 请求发送到远程位置。

我正在使用来自代码项目帖子(此处)的 SharpSNMP 8.5.0 库和 Snmp.BulkWalk 示例。

在示例中,他们使用 10 作为最大重复次数,并使用我注意到的嗅探软件创建多个数据报包以在子树中进行遍历。实际上,我每次都会收到 120 个数据包结果。所以我决定尝试更高的最大重复次数,我注意到数据包数量正在下降,实际上我可以在一个数据包中获取所有数据。现在我有另一个问题:当我从使用 GPRS 的服务器对设备进行 snmpwalk 时,远程设备正在使用 GPRS,我收到超时或缓冲区超出大小错误。当我在本地 PC 上运行相同的解决方案并从路由器访问远程设备(不涉及 GPRS)时,我没有收到任何错误并获得所有数据!

有人可以解释这种行为吗?它与GPRS限制有关吗?GPRS不可靠?还是服务器的网络限制?

(服务器中的 MTU 为 1500)。有没有人对可以通过 SNMP-UDP 数据包发送的最佳实践和最佳数据包大小有经验?

0 投票
0 回答
1265 浏览

snmp - 无法使用 SharpSNMP 接收 v3 陷阱/通知

使用 snmptrapd 示例,我能够轻松接收 v1 陷阱和 v2 陷阱/通知。但是,使用 v3 我无法接收陷阱。我正在使用 AES128 和 SHA1 进行隐私和身份验证。

当我“wireshark”端口 162 时,我看到“encryptedPDU: privKey unknown”来自我试图从中接收陷阱的设备。如果有帮助,它正在使用 NET-SNMP。

我能够使用 SharpSNMP 来实现应用程序,以毫无问题地获取和设置。我在这里想念什么?

下面的代码片段:

注意:engine.Start() 是从实例化类中调用的。