目录
自动化备份网络设备配置是比较实用的功能,网上很多文章都有涉及,这里整理一下自己搜索到的相关实现方法,用于整理记录。
1、命令交互方式show配置信息
利用telnet、ssh方式登录设备,利用网络设备自身的show或display命令显示配置信息,并抓取。这种方式比较通用,只要网络设备开启telnet或ssh即可实现。这里有一个问题,配置信息一屏显示不下,需要分屏显示,一般可以用命令取消分屏,或者自行判断分屏提示符。可以参考的实现有:
https://www.conum.cn/program/python/230.html
这个文章比较全面,利用pexpect模块调用本地telnet程序访问设备,判断是否存在分屏提示符“more”字样来抓取完整配置信息。
https://zhuanlan.zhihu.com/p/35038770
https://blog.51cto.com/chier11/2398299
https://blog.51cto.com/yanconggod/2149603
https://blog.csdn.net/epubit17/article/details/105657115
上述文章利用NetMiko模块,实现ssh交互,这个模块实现了网络设备的一些通用交互命令,避免了第一个参考文章中自行判断是否分屏的问题,推荐采用此模块。
https://zhuanlan.zhihu.com/p/143262739
这个文章非常好的说到了NetMiko的异步版本netdev模块。
https://blog.51cto.com/jackor/2134717
这个文章利用telnetlib模块,实现telnet交互。还可以尝试利用支持协程的telnetlib3模块。
2、利用设备的tftp命令发送本机配置文件到服务器
对自身支持ftp或tftp客户端命令的网络设备,可以利用telnet或ssh方式登录网络设备,在设备执行tftp或ftp命令,把配置文件直接发送到指定服务器上。这种方式避免了show和display命令的一些不便捷性,而且效率更高。可以参考的实现有:
https://blog.51cto.com/wcc127/2406932
https://blog.csdn.net/luoz_java/article/details/105392168
上面文章利用了paramiko模块,这个模块实现了ssh客户端和sftp功能。交互时利用tftp发送startup.cfg文件到指定服务器上,实现配置文件备份。另外还有AsyncSSH这个模块支持异步的SSH客户端,可以尝试。
3、网络设备开启FTP服务,远程下载配置文件
网络设备自己开启ftp服务器功能,直接ftp登录设备下载配置文件,这种方式不方便,需要所有网络设备开启ftp服务器功能很麻烦,另外也不是所有网络设备都支持开启ftp服务。可以参考的实现有:
https://blog.51cto.com/11555417/2408654
这个文章实现完整度比较高,利用ftplib模块,登录开启ftp服务的交换机上,下载配置文件。