Python网络编程实现自动化,简化Telnet网络配置工作

网络工程领域不断出现新的协议、技术、交付和运维模式 。传统网络面临着云计算、人工智能等新连接需求的挑战 。企业也在不断追求业务的敏捷、灵活和弹性 。在这些背景下 , 网络自动化变得越来越重要 。
网络编程与自动化旨在简化工程师网络配置、管理、监控和操作等相关工作 , 提高工程师部署和运维效率 。本课程定位于指导网络工程师初步了解Python编程实现网络自动化
背景:传统网络运维困境
传统的网络运维工作需要网络工程师手动登录网络设备 , 人工查看和执行配置命令 , 肉眼筛选配置结果 。这种严重依赖“人”的工作方式操作流程长 , 效率低下 , 而且操作过程不易审计 。

Python网络编程实现自动化,简化Telnet网络配置工作

文章插图
 
经典运维场景
在工作中你是否遇到过这样的场景:
1.设备升级:现网有数千台网络设备 , 你需要周期性、批量性地对设备进行升级 。
2.配置审计:企业年度需要对设备进行配置审计 。例如要求所有设备开启sTelnet功能 , 以太网交换机配置生成树安全功能 。你需要快速地找出不符合要求的设备 。
3.配置变更:因为网络安全要求 , 需要每三个月修改设备账号和密码 。你需要在数千台网络设备上删除原有账号并新建账号 。
网络自动化
网络自动化 , 通过工具实现网络自动化地部署、运行和运维 , 逐步减少对“人”的依赖 。这能够很好地解决传统网络运维的问题 。
业界有很多实现网络自动化的开源工具 , 例如Ansible、SaltStack、Puppet、Chef等 。从网络工程能力构建的角度考虑 , 更推荐工程师具备代码编程能力 。
Python网络编程实现自动化,简化Telnet网络配置工作

文章插图
 
基于编程实现的网络自动化
近几年随着网络自动化技术的兴起 , 以Python为主的编程能力成为了网络工程师的新技能要求 。
Python编写的自动化脚本能够很好的执行重复、耗时、有规则的操作 。
Python网络编程实现自动化,简化Telnet网络配置工作

文章插图
 
举例:Python实现设备自动化配置
网络自动化能做什么?最直观的一个网络自动化例子就是自动化配置设备 。我们可以把这个过程分为两个步骤:编写配置文件和编写Python代码将配置文件推送到设备上 。
首先用命令行方式写配置脚本 , 然后通过Telnet/SSH将它传到设备上运行 。这种方式对于初学网络编程与自动化的网络工程师来说 , 比较容易理解 。本章节主要介绍这种方式实现网络自动化 。
编程语言
编程语言(Programming Language) , 是一种用于编写计算机程序的语言 , 用于控制计算机的行为 。
按照语言在执行之前是否需要编译区分 , 可以将编程语言分为需要编译的编译型语言(Compiled Language) , 不需要编译的解释型语言(Interpreted Language)。
Python网络编程实现自动化,简化Telnet网络配置工作

文章插图
 
计算技术栈与程序执行过程
Python网络编程实现自动化,简化Telnet网络配置工作

文章插图
 
高级编程语言 - 编译型语言
编译型语言:编译型语言的程序在执行之前有一个编译过程 , 把程序编译成为机器语言的文件 。运行时不需要重新翻译 , 直接使用编译的结果 。典型的如C/C++/Go语言 , 都属于编译型语言 。
从源码到程序的过程:源码需要由编译器、汇编器翻译成机器指令 , 再通过链接器链接库函数生成机器语言程序 。机器语言必须与CPU的指令集匹配 , 在运行时通过加载器加载到内存 , 由CPU执行指令 。
Python网络编程实现自动化,简化Telnet网络配置工作

文章插图
 
高级编程语言 - 解释型语言
解释型语言:解释型语言的程序不需要在运行前编译 , 在运行程序的时候才逐行翻译 。典型的如JAVA/Python语言 , 都属于解释型语言 。
从源码到程序的过程:解释型语言的源代码由编译器生成字节码 , 然后再由虚拟机(JVM/PVM)解释执行 。虚拟机将不同CPU指令集的差异屏蔽 , 因此解释型语言的可移植性相对较好 。
Python网络编程实现自动化,简化Telnet网络配置工作


推荐阅读