首页 > 解决方案 > 将变量用作任何整数的 Pythonic 方式

问题描述

我在 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 作为参数,没有附加变量,您可能会看到我的变量发生变化,突出显示的附加数字也是如此:

SNMP 接口状态查询响应

基本上我在这里寻找的是响应,但不幸的是,我无法预测我要查询的每个 IP 地址将是什么“随机”数字。

我可以使用一个循环来尝试 20 或 50 个查询,并且只保存唯一一个可以工作的响应,但这很难看。更好的是一些内置函数或库,它们只会对查询说:

“对该 OID的 SNMP 查询,附加任何整数,并附加我的变量”。

我绝对不想生成一个随机整数,因为它已经在我正在查询的设备的配置中生成,我只想避免循环只是为了获得对精确查询的正确响应。

我希望这已经足够清楚了。

标签: pythonpython-2.7snmp

解决方案


像这样的东西应该工作:

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])

推荐阅读