netmiko的send_command_timing是基于时间的一个执行命令的方法。它会自动判断执行命令是否结束。

执行命令后,它会一直非常短的时间内循环读取ssh隧道中的回显,如果发现没有回显,停止延迟因子乘以2秒,延迟因子默认值为1 ,也就是说延迟两秒,两秒内还没有任何消息,那就认为回显结束了,退出把回显全部返回。

如果一直读一直有回显,到了创建连接类的timeout时间到了,它也会退出,把收集的回显返回,这个时候不报错。问题就在于一些设备在极端情况下,执行某些命令会有几秒钟卡住,所以这个延迟因子需要适当调大一些,才能避免这种情况发生。


小心netmiko的send_command_timing抽风_默认值

我们用netmiko或者nornir_netmiko执行思科的一些老旧设备时就遇到了配置备份不完整的现象,主要是执行show run之后,在回显的building configuration阶段卡了2秒以上导致的。

现网中这种情况 我觉得还是比较容易发生的,谁没个抽风的时候,所以执行配置备份和部分show命令 我觉得还是send_command靠谱。

我们选择超时不报错的时候,其实已经做了妥协。自己心里一定要清楚这个事情。

大家使用的时候要注意。

知其然知其所以然。