首页 > 其他分享 >netmiko

netmiko

时间:2022-12-28 01:11:31浏览次数:56  
标签:cli netmiko delay 因子 factor 延迟

 

https://zhuanlan.zhihu.com/p/546340640

https://zhuanlan.zhihu.com/p/541592293

3.6.7 登录与执行速度比较慢

netmiko和设备交互,都是通过write_channel写入命令到通信隧道中,然后以某种频率去隧道中循环读取数据。所以在网络条件恒定的前提之下,适当调小停顿等待时间,进而调高隧道中读取的频率,可以让回显尽早收集齐,完成相关操作的确认。而提高整个频率就是靠延迟因子的调整,我们之前讲解的延迟因子很多都是方法内部的延迟因子,实际上netmiko的延迟因子不是只有这一个,或者说,这个延迟因子只是局部延迟因子(大部分局部的延迟因子默认值都是1),还有一个隐藏的全局延迟因子。只要是和设备有相关命令行交互的方法,大都会有delay_factor这个参数。但是并不是由这个局部延迟因子单独决定最终的实际延迟因子进而控制频率的,netmiko有一套比较灵活的延迟因子选举机制:

​ 在初始化连接的时候,有一个全局延迟因子global_delay_factor(默认值为1)和fast_cli模式(默认值为False)。

​ 当不开启fast_cli模式的时候,netmiko在各个方法内选择局部延迟因子delay_factor和全局延迟因子global_delay_factor中的较大者。所以我们单纯调整任何一个延迟因子不得其法可能都不会有效果。

​ 当开启fast_cli模式的时候,netmiko会认为用户需要优化读取数据的性能,需要提高读取信息的频率,这时它会选择局部延迟因子delay_factor和全局延迟因子global_delay_factor中的较小者。

​ 以上行为是netmiko内部的select_delay_factor方法的基本逻辑,各个方法执行的时候基本都先调用此方法来判定最终的延迟因子,比如取消分页的时候,在取消分页方法内部调用select_delay_factor方法,大多数设备给其赋值局部延迟因子是1,这个时候我们单纯调整全局的延迟因子,并不会提高效率。

​ 为了调高读取隧道信息中的频率,我们调小程序停顿等待的时间,调小延迟因子是我们的“出路”。结合上面的逻辑,为了提高登录速度,fast_cli调整为True,开启快速模式,全局延迟因子global_delay_factor调小,比如笔者设置为0.1。有些设备不调整参数,使用默认值,笔者的模拟器设备华为CE交换机登录耗时大约8秒甚至更久,但是调整上面的参数后,时间可以缩短到一秒。

from netmiko import ConnectHandler
import time
# 设备连接信息 开启fast_cli快速模式,全局global_delay_factor延迟因子调小(默认值为1)
dev = {'device_type': 'huawei',
       'host': '192.168.137.201',
       'username': 'netdevops',
       'password': 'Admin123~',
       'port': 22,
       'timeout': 180,
       'fast_cli':True,
       'global_delay_factor':0.01,
       'session_log': 'session.log',
       }
print(time.time())
with ConnectHandler(**dev) as conn:
       print(time.time())
       print(conn.is_alive())

以上方法实际上也会让执行速率变快,但是这块有时候在感官上并不是特别明显。全局延迟因子已经调整的比较小的情况下,各类发送命令或者配置的延迟因子也可以无需调整。

标签:cli,netmiko,delay,因子,factor,延迟
From: https://www.cnblogs.com/wt11/p/17009314.html

相关文章

  • netmiko+textfsm自动统计交换机端口模块型号数量与闲置模块
    统计和查找交换机模块是件很费时费力的事情,特别是需要掌握库存数量时,成百上千块模块一块一块统计没有两天的时间是不行的,且统计出的数据需要一定的格式化才能便捷的录入数......
  • Centos 7 + python3 + paramiko + netmiko 安装
    转载自 (31条消息)Centos7下安装Python3并通过Pip安装Paramiko与Netmiko_筐瓢大师小吕的博客-CSDN博客             ......
  • netmiko批量操作华为设备
    importnetmikoimportopenpyxlfromnetmikoimportConnectHandlerfromopenpyxlimportload_workbookfromconcurrent.futuresimportThreadPoolExecutor#从ex......
  • netmiko交换机备份
    importnetmikoimporttimefromnetmikoimportConnectHandlerimportosimportthreadingfromqueueimportQueue#定义用户名和密码变量user=交换机用户pawd=......