我在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查询,附加了任何整数,并在其后附加了我的变量。”
我绝对不希望生成随机int,因为它已经在我查询的设备的配置中生成,我只是想避免为了获得对精确查询的正确响应而进行循环。
我希望这很清楚。
答案 0 :(得分:0)
类似的事情应该起作用:
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])