【发布时间】:2017-08-02 14:51:39
【问题描述】:
我正在编写一个应用程序来监控我们网络中的 SNMP 设备。有大量的 OID,我可以也不能在这些设备上请求数据。我如何确定我可以从这些数据中获取哪些数据以及我不能从这些数据中获取哪些数据?首先,所有有效的 OID 是什么,其次,哪些对我正在查询的设备有效。
在一个子网中,我发现大约有 3 打设备回复了,所以我假设我这里有几百个要查询。
【问题讨论】:
我正在编写一个应用程序来监控我们网络中的 SNMP 设备。有大量的 OID,我可以也不能在这些设备上请求数据。我如何确定我可以从这些数据中获取哪些数据以及我不能从这些数据中获取哪些数据?首先,所有有效的 OID 是什么,其次,哪些对我正在查询的设备有效。
在一个子网中,我发现大约有 3 打设备回复了,所以我假设我这里有几百个要查询。
【问题讨论】:
没有事先可以查询的信息来找出可以检索的 OID 集。您必须查询它们,并且在失败时您知道您无法查询它们。其他任何事情都会带来安全风险。
幸运的是,SNMP 标准有 GETNEXT,即。你不需要知道什么 OID 查询。您可以自动遍历(遍历)所有可用的变量(给定身份验证/隐私访问权限),然后确定要做什么。
如果您遍历 MIB-2 中的系统组,这是您可以检索到的最基本信息,那么您可以确定系统的类型,并从中获取它的功能。 NMS 应用程序供应商有数据库,这是专有 IP。您可以查阅供应商的文档。
【讨论】:
getNext() 方法调用返回的数据在说什么。