基于Python的网络设备监测管理系统的设计与实现
摘要:传统的网络运维工作中,其工作形式主要以人为核心,通过借助一些工具去进行运维工作,其中不乏大量的重复性工作。这类工作往往需要工作者投入较多的精力,而且重复性的做同一项工作可能会因疲劳导致出错,本文通过Python去实现一个简单的网络设备监测管理系统,该系统可以批量的对网络设备进行处理,其目的是去简化运维工作的繁杂程度。
关键词:Python;网络运维自动化;Paramiko
一、网络自动化运维的必要性
1.Python应用于网络自动化运维中的背景与优势
当下越来越多的新技术正在不断丰富着人们的生活,人们对计算机网络质量的要求不断提高,计算机网络体量不断增大,因此网络工作人员进行运维工作时面临着各种各样的问题。如果还是以人工为主力,手动的去管理大量的网络设备,目前看来,采用这种传统方法可行程度已经不高。目前网络运维自动化已经不再是一个新鲜的话题,Python是做自动化工作最常用的语言之一,它有着丰富的自动化库,其中常用的模块库有Paramiko、Netmiko等,利用这些库可以
轻松的接入网络设备对其进行管理,从而简化工作流程,提高网络运维质量。
选用Python的原因不仅是因为它是做自动化的常用语言,还有它语法上简洁高效,丰富的第三方库,安全性高,而且自动化库所支持厂商数量也是及其丰富等优势。
2.设计意义
对于规模较大的网络,使用Python自动化命令脚本去实现网络设备的管理是有必要的,因为使用脚本可以批量对设备进行管理,提高网络管理的效率。该系统集成了三个功能,其一是对网络设备运行状态进行监测,可以实时获取网络设备当前的一些信息,比如CPU占用率、内存占用率、电源、风扇、温度等信息,同时会根据预设的警戒值进行预警;其二就是实现了对网络设备配置文件的一个备份工作,可以批量的对网络中的指定设备进行配置文件批量备份,该功能的意义就是在需要对网络配置新的网络策略,或误操作之后无法回退时,将备份好的配置文件导入设备让设备回退到之前的状态,或者因为某些特殊原因导致设备损坏需要更换新设备时,直接将之前备份好的相应配置文件导入即可让设备快速投入工作;其三就是可以批量的执行一些简单的配置脚本,达到快速完成配置工作的目的。
二、系统需求分析
网络运维自动化已经不是一个新鲜的话题,它是一个庞大的框架,在这个框架之中不断产生新的网络管理手段,在这个框架的支持下可以大幅解放劳动力。大部分的工作几乎都会有备份的环节,备份是一种预防手段,是将文件加以复制,一旦由于特殊原因产生问题或是误操作时,得以利用之前备份的文件恢复其完整性和正常的运作,所以备份工作这一环节必不可少。那么在网络运维过程中我们怎样去批量的将其备份配置文件呢?依靠人工通过命令去备份还是有其他方法呢?这时引入Python,使用Python编写自动化脚本去实现批量的备份;不仅备份工作需要做好,我们也会关注网络设备的运行状态,可以使用Python封装一些配置命令脚本,获取网络设备的信息,超出设定警戒值将会发出告警;在运维工作过程中,总会去对一些设备批量进行配置,那么我们是否可以将配置脚本准备好,通过Python去实现批量处理来代替手动操作呢,答案是完全可以的;将这些固定的运维工作方式进行封装,进而代替人工,降低运维工作强度。
三、系统的设计与实现
该系统使用Python语言实现,使用eNSP搭建拓扑进行测试,所以封装的网络设备配置脚本是基于华为设备的。首先,三个功能都是基于Paramiko模块进行实现,利用Paramiko所提
供的SSHClient()方法初始化一个客户端,使用connect()与设备建立SSH连接,需要被SSH设备IP以及用户名密码都存放在txt文档之中,通过使用for循环进行遍历,逐台登录,建立连接后,通过invoke_shell()唤醒命令,这时就是将特定的配置脚本命令封装在其中了。
功能一设备状态监测的实现利用Paramiko提供的方法建立连接后,会向设备发送一些查看设备信息的配置命令,比如display cpu-usage查看CPU占用率,display memory-usage查看内存利用率等,但这些返回的信息比较杂乱,考虑到与使用者交互更加友好而不是直接返回一大堆无用的信息供使用者查看,这里使用正则表达式对获取到的信息进行解析,将解析好的相对清爽的信息输出到系统窗口中,而Python所提供的re模块可以利用正则表达式对数据进行处理,同时会对解析出的数据与设定值进行一个判断,来达到一个告警的功能。
功能二批量备份配置文件功能使用到了TFTP64这款软件作为辅助,将网络中的一台计算机配置成了TFTP服务器,然后使用Python脚本将相关命令封装。其中将配置文件备份到TFTP服务器上使用tftp+IP地put "+设备名+"_config.zip \n,即完成了备份工作。同样要从服务器上获取配置文件,将其导入使用tftp+IP地get "+设备名+"_config.zip \n即可将配置文件下载导入设备。
功能三批量执行用户自定义配置脚本,应用场景是需要对一些设备进行批量操作时,用户可以将配置脚本预先存放在程序目录下的文件中,设备的IP地址需要存放在文件中,该功能的实现使用两个for循环去遍历这两个文件,逐台登录设备执行用户自定义脚本。
python正则表达式判断四、展望
至此,本文通过使用Python的一些自动化库去实现了一些网络设备运维自动化的功能,利用Python提供的相关模块不仅仅可以实现网络运维自动化的功能,还可以实现其他场景的运维自动化,相信未来Python网络运维自动化的功能会更加强大。
参考文献:
[1]杨泽明.Python在网络运维中的运用研究[J].无线互联科技,2022,19(01):86-87.
[2]孙培岩.Python技术下的网络自动化运维[J].电子世界,2021(23):182-183.DOI:10.19353/jki.dzsj.2021.23.079.
[3]李朝阳,周波,张小锋,陈震.一种基于Netmiko的网络设备自动化运维方法研究[J].通信技术,2021,54(03):773-778.
[4]锁泉凝.基于Python的园区网络自动化运维[J].长江信息通信,2021,34(06):74-75+78.
[5]刘熠.基于Python的Web数据挖掘技术研究与实现[D].荆州:长江大学,2018.
[6]Phommasan Bounpasong.基于Python的网络系统自动化配置方案研究[D].兰州:兰州交通大学,2020.DOI:10.27205/dki.gltec.2020.001318.
作者简介:
郭守欢,男,山东协和学院,网络工程18-01班学生
樊冬梅,女,山东协和学院,讲师