Pythonic将变量用作任意整数的方法

Pythonic将变量用作任意整数的方法,python,python-2.7,snmp,Python,Python 2.7,Snmp,我在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

我在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查询,附加任何整数,并附加my变量

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


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

像这样的事情应该会奏效:

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

正则表达式在这里绝对不合适。也许你只需要将一个数字随机化并插入其中。我知道regex并不是为这个目的而设计的,我只是想找到一种实用的方法来避免循环100或200次,以获得正确的查询响应。我们使用OID的原因是它们是严格定义的。如果您不了解您试图操作的OID,解决方案是修复您的理解不足。话虽如此,如果您无法预测本地生成的资源的数量,并且设备不提供以编程方式查询该资源的方法-可能通过附近的另一个OID循环直到找到数字可能是你唯一的办法。在标准SNMP中,没有办法说我知道你只有其中一个,所以就给我这个。我实际上不想生成一个随机数,因为它已经存在,问题是它可能会因查询而异。我只是想告诉程序忘记这个随机数,并认为它是一个1到100之间的数字。无论如何,谢谢。@Ugohihi完全不清楚,你想做什么,问题是什么,请提供更多细节,如果你需要更好的答案。据我所知,中间部分不是随机的,但他无法访问。所以他不想把这部分随机化。对我来说,最好的方法是尝试最小值和最大值之间的每一个数字,并在失败时尝试捕捉