首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在pysnmp中插入snmpset事务中的延迟?

有没有办法在pysnmp中插入snmpset事务中的延迟?
EN

Stack Overflow用户
提问于 2019-01-16 00:19:08
回答 2查看 207关注 0票数 2

总之,我对python相当陌生,但我编写脚本的方法是在不牺牲可读性的情况下尽量少使用代码行。这么说,这就是我试着用手边的剧本做的事。

我有一个脚本,它通过Pysnmp从cisco交换机获取正在运行的或启动的配置,并将其发送到TFTP服务器。这要求在交换机上设置多个OID的值。当我试图通过snmp在单个setCmd命令上设置多个OID时,如下所示:

代码语言:javascript
复制
g = setCmd(SnmpEngine(),
                   CommunityData(snmp_community),
                   UdpTransportTarget((host_ip, 161)),
                   ContextData(),
                   ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopyProtocol', random_number), 1),
                   #ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopySourceFileType', random_number), users_numeric_entry),
                   #ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopyDestFileType', random_number), 1),
                   #ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopyServerAddress', random_number), '10.10.11.100'),
                   #ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopyFileName', random_number), destination_file),
                   #ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopyEntryRowStatus', random_number), 1)
                   )

        next(g)

我可以在交换机上(通过调试)看到SNMP数据包被传递,但是在应用它们时必须有一个时间问题(设置OID的值)。With that being said, is there a way to insert a few millisecond delay between each setCmd command?

当单独设置每个OID的值时,我的脚本将按预期工作,并将配置复制到TFTP服务器。因此,对于我需要设置值的每个OID,我有一个setCmd,如下所示:

代码语言:javascript
复制
g = setCmd(SnmpEngine(),
                   CommunityData(snmp_community),
                   UdpTransportTarget((host_ip, 161)),
                   ContextData(),
                   ObjectType(ObjectIdentity('CISCO-CONFIG-COPY-MIB', 'ccCopySourceFileType', random_number),
                              users_numeric_entry))

        next(g)

我在一个setCmd命令中设置所有OID的问题真的是一个延迟问题吗?如果是,我可以在命令中插入延迟吗?

谢谢您抽时间见我!

从交换机中用DEBUGS更新

发送单个setCmd__时的调试:

代码语言:javascript
复制
00:19:16: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:19:16: SNMP: Get request, reqid 2179409, errstat 0, erridx 0
 system.5.0 = NULL TYPE/VALUE
00:19:16: SNMP: Response, reqid 2179409, errstat 0, erridx 0
 system.5.0 = Switch
00:19:16: SNMP: Packet sent via UDP to 10.10.10.10
00:19:17: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:19:17: SNMP: Set request, reqid 2179410, errstat 0, erridx 0
 ccCopyEntry.2.21 = 1
 ccCopyEntry.3.21 = 4
 ccCopyEntry.4.21
Switch# = 1
 ccCopyEntry.5.21 = 10.10.10.10
 ccCopyEntry.6.21 = Switch-running.txt
 ccCopyEntry.14.21 = 1
00:19:17: SNMP: Response, reqid 2179410, errstat 12, erridx 6
 ccCopyEntry.2.21 = 1
 ccCopyEntry.3.21 = 4
 ccCopyEntry.4.21 = 1
 ccCopyEntry.5.21 = 10.10.10.10
 ccCopyEntry.6.21 = Switch-running.txt
 ccCopyEntry.14.21 = 1
00:19:17: SNMP: Packet sent via UDP to 10.10.10.10

当我发送单独的setCmd命令时:

代码语言:javascript
复制
00:15:33: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:33: SNMP: Get request, reqid -1563913845, errstat 0, erridx 0
 system.5.0 = NULL TYPE/VALUE
00:15:33: SNMP: Response, reqid -1563913845, errstat 0, erridx 0
 system.5.0 = Switch
00:15:33: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid -1563913844, errstat 0, erridx 0
 ccCopyEntry.2.102 = 1
00:15:34: SNMP: Response, req
Switch#id -1563913844, errstat 0, erridx 0
 ccCopyEntry.2.102 = 1
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid -1563913843, errstat 0, erridx 0
 ccCopyEntry.3.102 = 3
00:15:34: SNMP: Response, reqid -1563913843, errstat 0, erridx 0
 ccCopyEntry.3.102 = 3
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid
Switch# -1563913842, errstat 0, erridx 0
 ccCopyEntry.4.102 = 1
00:15:34: SNMP: Response, reqid -1563913842, errstat 0, erridx 0
 ccCopyEntry.4.102 = 1
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid -1563913841, errstat 0, erridx 0
 ccCopyEntry.5.102 = 10.0.1.81
00:15:34: SNMP: Response, reqid -1563913841, errstat 0, erridx 0
 ccCopyEntry.5.102 = 10.0.1.81
00:15:34: SNMP: Packet sent via UDP to 10.0.
Switch#1.20
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid -1563913840, errstat 0, erridx 0
 ccCopyEntry.6.102 = Switch--start.txt
00:15:34: SNMP: Response, reqid -1563913840, errstat 0, erridx 0
 ccCopyEntry.6.102 = Switch--start.txt
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Set request, reqid -1563913839, errstat 0, erridx 0
 ccCopyEntry.14.102 =
Switch#1
00:15:34: SNMP: Response, reqid -1563913839, errstat 0, erridx 0
 ccCopyEntry.14.102 = 1
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
00:15:34: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:34: SNMP: Get request, reqid -1563913838, errstat 0, erridx 0
 ccCopyEntry.10.102 = NULL TYPE/VALUE
00:15:34: SNMP: Response, reqid -1563913838, errstat 0, erridx 0
 ccCopyEntry.10.102 = 2
00:15:34: SNMP: Packet sent via UDP to 10.10.10.10
Switch#
00:15:37: SNMP: Packet received via UDP from 10.10.10.10 on Vlan1
00:15:37: SNMP: Set request, reqid -1563913837, errstat 0, erridx 0
 ccCopyEntry.14.102 = 6
00:15:37: SNMP: Response, reqid -1563913837, errstat 0, erridx 0
 ccCopyEntry.14.102 = 6
00:15:37: SNMP: Packet sent via UDP to 10.10.10.10
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-17 15:58:22

该条目遵循RowStatus语义,详见https://www.rfc-editor.org/rfc/rfc2579

在我看来,您需要将ccCopyEntryRowStatus设置为createAndGo,而不是active。

票数 1
EN

Stack Overflow用户

发布于 2019-01-16 06:29:30

我不认为在cisco交换机中可以让SNMP代理单独处理带有延迟的SNMP变量。你(作为一个用户)需要处理时间的问题看起来也很可疑.

所以我可能会试图理解为什么开关不喜欢你的管理命令,有什么正确的方法来管理它.灵感的一个可能来源是MIB中的描述,其中定义了您要处理的变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54208707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档