gpt4 book ai didi

python - 通过func发送multi oid到pysnmp

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:06 25 4
gpt4 key购买 nike

目前我有这个:

        def snmp_request(self,*oids):
my_oids =''
for oid in oids:
my_oids += '\'' + oid + '\','
print(my_oids)
answer_list = list()
cmdGen = cmdgen.CommandGenerator()
errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd(
cmdgen.CommunityData(self.community),
cmdgen.UdpTransportTarget((self.ip, 161),20,1),
my_oids
)
if errorIndication:
return (errorIndication)
else:
if errorStatus:
return ('%s at %s' % (
errorStatus.prettyPrint(),
errorIndex and varBindTable[-1][int(errorIndex)-1] or '?'
)
)
else:
for varBindTableRow in varBindTable:
for name, val in varBindTableRow:
answer_list.append( val.prettyPrint())
return answer_list

打印显示:

'1.3.6.1.2.1.31.1.1.1.18','1.3.6.1.2.1.2.2.1.2',

但它不起作用... pysnmp 不理解请求 -_-

否则这个解决方案有效:

        def snmp_request(self,*oids):
my_oids =''
for oid in oids:
my_oids += '\'' + oid + '\','
print(my_oids)
answer_list = list()
cmdGen = cmdgen.CommandGenerator()
errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd(
cmdgen.CommunityData(self.community),
cmdgen.UdpTransportTarget((self.ip, 161),20,1),
'1.3.6.1.2.1.31.1.1.1.18','1.3.6.1.2.1.2.2.1.2',
)
if errorIndication:
return (errorIndication)
else:
if errorStatus:
return ('%s at %s' % (
errorStatus.prettyPrint(),
errorIndex and varBindTable[-1][int(errorIndex)-1] or '?'
)
)
else:
for varBindTableRow in varBindTable:
for name, val in varBindTableRow:
answer_list.append( val.prettyPrint())
return answer_list

但是我必须在我的函数中编写每个OID,所以它非常无用,为什么我不能像我想要的那样发送大量OID?

最诚挚的问候,

最佳答案

如果您的输入 oid 是 Python 字符串序列,您应该将其传递给 nextCmd(),如下所示:

errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd(
cmdgen.CommunityData(self.community),
cmdgen.UdpTransportTarget((self.ip, 161),20,1),
*oids
)

无需向 OID 添加额外的引号或逗号。

关于python - 通过func发送multi oid到pysnmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22510595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com