我在python脚本中使用SNMP查询的参数时遇到了问题。SNMP查询采用OID作为参数。我在这里使用的OID是在下面的代码中编写的,如果在查询中单独使用,应该会返回我正在查询的IP地址的接口的状态列表。
我想要的是使用OID并附加一个变量,以便获得非常精确的信息(如果我只使用OID,我将只获得一个只会使问题复杂化的东西的列表)。
查询是这样的:
oid = "1.3.6.1.4.1.2011.5.25.119.1.1.3.1.2."
variable = "84.79.84.79"
query = session.get(oid + variable)
在这里,此查询将返回一个损坏的SNMPObject,因为在配置我要查询的设备的过程中,由于某些原因,在参数的这两个元素之间添加了另一个数字。
下面的屏幕截图显示了SNMP请求的一些示例,该请求仅将上面的OID作为参数,没有附加变量,您可能会看到我的变量会发生变化,突出显示的附加数字也会发生变化:
基本上,我在这里寻找的是响应,但不幸的是,我不能预测我查询的每个IP地址的“随机”数字是什么。
我可以使用一个循环来尝试20或50个查询,并且只保存唯一可以工作的查询的响应,但它很难看。更好的是一些内置的函数或库,它们只会对查询说:
对该OID的SNMP查询,附加了任何整数的__,以及附加了我的变量的OID。
我绝对不想生成一个随机的int,因为它已经在我要查询的设备的配置中生成了,我只想避免循环,只是为了获得对精确查询的正确响应。
我希望这已经足够清楚了。
发布于 2018-07-03 15:43:12
像这样的东西应该是有效的:
from random import randint
variable = "84.79.84.79"
numbers = "1.3.6.1.4.1.2011.5.25.119.1.1.3.1.2"
query = session.get('.'.join([numbers, str(randint(1,100)), variable])
https://stackoverflow.com/questions/51148929
复制相似问题