我们知道,服务器的硬件和操作系统软件已经完全解耦,硬件和软件可以分开购买,并进行按需安装。
但是网络设备专用性强,硬件和操作系统软件高度耦合,即使相同厂商的设备,不同类型网络设备间也是拥有不同的CLI命令行。
如果通过手工配置这些网络设备,就需要了解每种设备的CLI命令行,费事费力。
为了改善工作效率,我们可以利用Python来编写脚本,实现网络自动化运维。
今天成哥为大家带来网络自动化运维利器Pyhton Netmiko模块,下面让我们一起来了解该模块的使用吧!
Netmiko模块用于简化了paramiko与网络设备之间的ssh连接,提供了世界主流网络设备厂商的适配。
Netmiko支持的设备与系统分为三类:
(1)定期测试(Regularly tested)
定期测试是每个Netmiko版本都会针对该套设备运行完整的测试。
(2)有限测试(Limited testing)
有限测试意味着在某个时间点针对该平台上的特定配置与操作回显进行测试。
(3)实验性(Experimental)
实验性意味着模块开发进行了一般适配,但版本未经过系统的单元测试。
每个种类适配的模块见下图,这些模块的适配会根据不同的Netmiko版本进行调整,具体见链接(https://ktbyers.github.io/netmiko/PLATFORMS.html)。
安装过程如下图所示:
(1)简单使用
现在来让我们来写第一个Netmiko程序实现设备版本的获取。
执行结果如下:
在上图的代码传参中我们看到一个device_type参数,该参数告诉程序当前所要连接的设备的系统类型,那这时肯定会有读者问我们怎么判断设备所对应的参数类型呢?
其实在Netmiko的安装目录下有个ssh_dispatcher.py的文件,该文件的第100行左右有个变量叫“CLASS_MAPPER_BASE”,通过该变量就可以准确的知道设备所对应的系统类型值了。
(2)调用逻辑
通过上面的示例我们已经了解了Netmiko的简单使用,现在让我们来看看在建立SSH连接及执行send_command方法时Netmiko内部的大概调用逻辑,了解了该逻辑后在程序执行异常可以很容易的知道问题所在,还可以通过继承与重写实现Netmiko未适配的设备与场景。
接下来我们来分析一下send_command()方法的源码,大概了解一下其内在的调用逻辑
看完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会话
今天给大家介绍了Pyhton Netmiko模块,通过该模块可以实现不同厂商和不同类型设备的SSH连接。
成哥后续会推出更多讲解Python模块文章,希望大家能够喜欢。