众所周知网络设备的配置在不同厂商之间、相同厂商的不同型号之间及相同型号不同版本之间都有着巨大的差异,同时随着数据中心网络设备的爆发式增长,通过人工来配置管理这些设备显得力不从心。

此时我们就需要一个能够适配多厂商设备的自动化模块来辅助我们日常的运维工作,今天小编为大家带来网络自动化运维利器Pyhton Netmiko模块,下面让我们一起来了解该模块的使用吧!

阅读本文大约需要十分钟,您可以先关注我们或者收藏文章,避免下次无法找到。

1、 简介

Netmiko模块用于简化了paramiko与网络设备之间的ssh连接,提供了世界主流网络设备厂商的适配。该模块的创建者叫Kirk Byers,是一名网工同时也是一位CCIE。跟小编的Title出奇的一致……

2、 支持的设备与系统

Netmiko支持的设备与系统分为三类:

(1) 定期测试(Regularly tested)

定期测试是每个Netmiko版本都会针对该套设备运行完整的测试

(2) 有限测试(Limited testing)

有限测试意味着在某个时间点针对该平台上的特定配置与操作回显进行测试

(3) 实验性(Experimental)

实验性意味着模块开发进行了一般适配,但版本未经过系统的单元测试

每个种类适配的模块见下图,这些模块的适配会根据不同的Netmiko版本进行调整。




netem模块 netmiko模块方法介绍_netem模块


3、 模块安装


netem模块 netmiko模块方法介绍_paramiko模块_02


安装过程如下图所示:


netem模块 netmiko模块方法介绍_IT_03


4、 模块使用

(1) 简单使用

现在来让我们来写第一个Netmiko程序实现设备版本的获取


netem模块 netmiko模块方法介绍_netem模块_04


执行结果如下:


netem模块 netmiko模块方法介绍_paramiko模块_05


在上图的代码传参中我们看到一个device_type参数,该参数告诉程序当前所要连接的设备的系统类型,那这时肯定会有读者问我们怎么判断设备所对应的参数类型呢?其实在Netmiko的安装目录下有个ssh_dispatcher.py的文件,该文件的第100行左右有个变量叫"CLASS_MAPPER_BASE",通过该变量就可以准确的知道设备所对应的系统类型值了。


netem模块 netmiko模块方法介绍_IT_06


netem模块 netmiko模块方法介绍_netem模块_07


(2) 调用逻辑

通过上面的示例我们已经了解了Netmiko的简单使用,现在让我们来看看在建立SSH连接及执行send_command方法时Netmiko内部的大概调用逻辑,了解了该逻辑后在程序执行异常可以很容易的知道问题所在,还可以通过继承与重写实现Netmiko未适配的设备与场景。


netem模块 netmiko模块方法介绍_IT_08


接下来我们来分析一下send_command()方法的源码,大概了解一下其内在的调用逻辑


netem模块 netmiko模块方法介绍_IT_09


看完send_command的方法的源码有什么感觉,如果有任何疑问都可以在文章最后给小编留言哦!

(3) Netmiko常用方法介绍

a. send_command_timing()

基于延迟机制执行command命令,常用于查询场景,与send_command()方法不同之处在于该方法时在循环次数达到最大值自动退出,而send_command()方法则必须匹配到指定的退出标识,否则抛出异常。

b. send_config_set()

该方法可以同时执行多条命令,同时会把执行的过程进行返回,一般会用在配置下发场景,该方法会自动进入设备配置模式不需要额外传入进入配置模式的命令。

c. send_config_from_file()

该方法可以从文件中加载配置命令进行配置下发

d. write_channel()

该方法是将命令字符串写入SSH会话通道中

e. read_channel()

该方法是从SSH会话通道中读取设备的响应数据

f. disconnect()

该方法是关闭SSH会话

上面的常用方法源码如果大家对其感兴趣请在文章最后留言,小编会专门出文章对你们感兴趣的方法进行源码解读,谢谢!