我有未启用SNMP的设备。我有API来获取其状态,并正在为其实现SNMP代理。我使用SNMP4j做到了这一点,并且可以回答GET请求并发送陷阱。
我的问题是,有几个(2)这样的设备来监控我的程序的同一个实例。到目前为止,我为MIB中的每个设备添加了一个分支,如1.3.6.1.4.1。PEN。devices.1.xxx
和1.3.6.1.4.1。PEN。devices.2.xxx
,但1-这很丑陋,2-我不能为每个设备提供一个MIB,但为整个系统提供一个MIB,其中包含冗余信息,这也很丑陋;)
我不确定MIBTable
对象是否适合,但它听起来不像是要走的路(我有固定数量的设备)。我还看到RFC 3413§3.5描述了SNMP代理转发器,但我不确定它是我需要实现的(我的设备未启用SNMP),SNMP4jProxyForwarder
似乎将一个MIB映射到另一个MIB。
使用SNMP4j,我实现了CommandResponder接口的processPDU()方法,我希望如果监控软件配置为将我的程序用作“代理转发器”,CommandResponderEvent中可能有一些信息可供我发送正确的响应PDU(虽然我没有找到任何此类信息,但我可能遗漏了一些信息)。
我可以启动我的代理的多个实例(每个设备一个),但出于资源稀少的原因,我宁愿不启动。解决这个问题的最佳方法是什么?桌子代理另外不可能?
编辑:
我发现一些NNM在GET请求中添加了一个额外的变量绑定来指示要寻址的设备(类似SNMP代理),而另一些NNM通过更改GET中的社区来映射设备。这些选项可行吗?哪一个是最常见/可接受的?
在这里使用一个简单的表来显示表和行的一般概念。。。
这是如何检索示例表(带有一个索引和另外2列)。也许您的每个设备都将是您自己表中的一行(在您自己的列中包含一堆数据)
snmptable -M +. -m +ALL -v 2c -c public -Ci myhost SNMPv2-MIB::sysORTable
SNMP table: SNMPv2-MIB::sysORTable
index sysORID sysORDescr sysORUpTime
1 SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1 The MIB for Message Processing and Dispatching. 0:0:00:00.33
2 SNMP-USER-BASED-SM-MIB::usmMIBCompliance The MIB for Message Processing and Dispatching. 0:0:00:00.33
走那张桌子:
snmpwalk -M +. -m +ALL -v 2c -c public myhost SNMPv2-MIB::sysORTable
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (33) 0:00:00.33
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (33) 0:00:00.33
步行进入上述部分:
snmpwalk -M +. -m +ALL -v 2c -c public myhost SNMPv2-MIB::sysORDescr.2
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for SNMPv2 entities
通过获取访问上述内容的一部分:
snmpget -M +. -m +ALL -v 2c -c public myhost SNMPv2-MIB::sysORDescr.2
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB module for SNMPv2 entities
编辑:要查看此OID如何适合树,请查看。。。
snmptranslate -M+. -m +ALL 1.3.6.1.2.1.1
SNMPv2-MIB::system
snmptranslate -M+. -m +ALL 1.3.6.1.2.1.1.9
SNMPv2-MIB::sysORTable
snmptranslate -M+. -m +ALL 1.3.6.1.2.1.1.9.1
SNMPv2-MIB::sysOREntry
snmptranslate -M+. -m +ALL 1.3.6.1.2.1.1.9.1.3
SNMPv2-MIB::sysORDescr
snmptranslate -M+. -m +ALL 1.3.6.1.2.1.1.9.1.3.2
SNMPv2-MIB::sysORDescr.2
例如,我可以启动两个程序侦听端口371。第二个没有任何问题地启动并接收传入连接,而第一个没有。一旦最后开始的进程终止,第一个接收它们。 假设这是Windows(XP)行为,它怎么可能是安全的行为呢?这意味着人们可以“过载”任何已经侦听的端口,而不是获得通常的“地址已经在使用”错误消息,并简单地绕过防火墙,规则只是说“允许端口371上的任何传入TCP连接”。
本文向大家介绍使用Python实现一个简单的项目监控,包括了使用Python实现一个简单的项目监控的使用技巧和注意事项,需要的朋友参考一下 在公司里做的一个接口系统,主要是对接第三方的系统接口,所以,这个系统里会和很多其他公司的项目交互。随之而来一个很蛋疼的问题,这么多公司的接口,不同公司接口的稳定性差别很大,访问量大的时候,有的不怎么行的接口就各种出错了。 这个接口系统刚刚开发不久,整个系统中,
是否有方法创建登录用户范围的注册id。我有一个应用程序,允许用户以不同的用户身份登录(例如一个用户作为学生,另一个用户作为家长)。用户可以在用户之间切换。这种情况有点类似于gmail应用程序,可以同时登录多个电子邮件ID。 问题是我们什么时候打电话 它将给出该应用程序实例的设备id。因此,如果我要针对登录的特定用户,我不能。 我可以实现以用户为目标的一种方法是显式地将用户id作为数据发送,在我的情
对不起,如果这是一个微不足道的问题,我是新的指南。假设我有下面这个类: 然后在其他地方我想做: 我希望有两个“MyClass”实例,一个名为“foo ”,一个名为“bar ”(也就是说,它们中的每一个都有一个不同的依赖实例)。我如何将这两个实例添加到我的注入器中,如何用“injector.getInstance”检索它们中的每一个? 我不想为每个可能的依赖项创建一个“MyClass”的子类。 谢谢
我对SNMP代理实现有一些基本问题,其中一些问题可能也无效,但请让我知道 是否有任何方法可以从SNMP Manager中找到代理支持的SNMP版本
python 怎么实现监控电脑是否有usb或其他可移动设备插入,最好也能检测手机插入。 用来在办公室里防止usb设备插入内部电脑里、 试过是做了一个pyqt的程序,然后开机后读取当前盘符,并保存下来,如果出现新的盘符就报错然后提醒用户拔掉,但是这样显然是有bug。 国内暂时没有特别靠谱的解决方法。