🍁博主简介
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
文章目录
书籍整体感受
整体来说还是很不错的,很厚一本书,共计568页,刚好最近也在看网络安全Web渗透,回来我就看了看这本书,个人感觉还是很不错的,从开始安装python,和python入门教程,有Windows版本的,也有Linux版本的,内容使用的python版本为:3.10.6;我也是个python小白,但是结合这本书来学习一点压力都没有,非常的好,这本书《网络工程师的Python之路:网络运维自动化实战(第2版)》。
书籍中分了11大章:
第一章为 Python的安装和使用
python安装方式为:Windows下安装和Linux安装
安装版本为:3.10.6
内容都非常的清晰,也有部署方式,部署就很简单,主要就是提前需要准备好环境;
使用python:
同样,分为两种:Windows使用和Linux使用,同时都分为交互模式与脚本模式;
交互模式是什么呢?怎么运行呢?
个人理解:交互模式就是直接运行python命令,进入交互页面,来进行查询模块和输出内容等一系列操作;windows上与linux上一样,都是需要在交互页面来进行操作,个人推荐在linux上使用,因为我是一直用的linux,比较熟练,这个交互模式就看个人的喜好,windows和linux都一样。
脚本模式又是什么呢?怎么运行呢?
个人理解:脚本模式就是先写到类似于txt的文本中,不过需要修改后缀名为py,不管是windows还是linux,都需要将后缀改为
py格式
,不一样的就是,windows上写脚本是写完之后,直接双击运行就行,同样的一句话“
print ("12123")
”在windows上运行就会弹出在消失,看不到内容,所以,windows就会多加一条命令为“
input ()
”;linux上运行脚本的方式为:
python3 脚本名称
即可,只不过也是同样的后缀名为py,比较好用,个人推荐在linux上使用python脚本。
第二章为 Python的基本语法
基本语法就是一些常见的:变量、注释、方法和函数、数据类型…;
这些都是python语言的基础,当然,不只是python、你学java、c++、go等等很多语言,这些都是基本的语法,都是通用的,虽然有的时候用法或者写法不一样,但大致都是一样的;
第三章为 Python的进阶语法
基本语法也是一些常见的:if判断、循环、文件的读写、可以自定义的函数、依赖模块、正则表达式、异常处理和类;
其实,这些也都是基础,在其他语言中也会用到,其中几个不管是哪个语言都是通用的,包括linux上的脚本;(判断、循环、正则)
模块的话,主要还是类似于一个环境,做某个操作需要用到这个环境,所以会有模块;在linux上安装模块的话也很简单,直接
pip3 install 模块名
即可;
异常处理和类,这些就是面向对象编程开发语言中的常用的了,文章中也会教你如何创建类和使用类;
总结前面
前面这些内容呢都是python的安装和使用,一些常用的基础知识,这本书做的都非常的精致,内容更是一绝,对于新手都特别的友好,讲的非常的详细;相信学完前面这些,就会写一些很基础的东西了,也算是了解一些python语言了,不管是对现在还是对以后,都是很有帮助的。面试的时候也很加分的。
第四章和第五章为 网络运维实战
内容都包含了都需要什么环境和准备什么东西,来进行教学,各个小节讲的非常的清晰;
第六章为 内置模块与第三方模块
主要是讲了这些模块的用法与作用,包括优缺点…
内容也包括常用的单线程与多线程的应用
第七章为 TextFSM 详解
TextFSM是什么呢???
TextFSM:来自谷歌的网络配置解析利器
Textfsm由text(文本)和fsm(有限状态自动机)两部分组成,它是谷歌开源的一个用于解析半格式化文本的Python模块。它的诞生也是专门为网络而生,你可以去github的wiki上看,它是为了解析通过cli驱动的网络设备的信息而诞生的。
传统的网络设备的配置解析,我们之前也分享过,通过正则表达式去解析,同时我也进行了分类:
- OneTake:一次解析出所有信息(如show version),基于此可以循环使用实现show ip arp等信息的解析;
- 分而治之:对于show interface、show run interface等,需要先裁剪文本,然后分而治之,一块一块的去抠我们想要的信息;
它有以下前提或者局限:
1、需要熟练掌握正则表达式。
2、需要熟练掌握Python的re模块的相关操作。
3、有时候需要添加很多逻辑,简单的是判断是否有这个字段,有则追加,无则填空或者其他默认值。有时候甚至用临时变量保存上一个值等等。
4、为了兼容性强,你可能要写一个非常长的正则,可读性非常差
我想可能也是出于以上原因,谷歌的内部做了一个Textfsm的Python包用来解析网络配置数据。我们有充分的理由怀疑这是SRE部门开发的一个很有趣也很强大的基于Python的文本解析的包。因为它是基于Python开发的,这个是很多运维工程师的比较热爱的一种语言;它的初衷是用来解析网络设备信息的(但不局限于网络设备信息);它通过一些抽象,希望运维人员编写简单的模板进而解析信息,而无需硬编码。
Textfsm这个名字的两个部分也充分的解释了它的原理:
Text,它需要有文本输入,这个文本是网络的半结构化配置数据,半结构化简单理解就是有规律的文本。实际上网络的配置数据也是通过一定的程序有规律的print出来的。理论上它是可以通过其他方式还原回去的。
FSM,有限状态自动机,实际上就是一套用文本描述的规则模板(Template),告诉底层代码,通过这些描述语言借助底层的程序将半结构化数据解析成为结构化数据(Python中的list,成员一般是一个dict,有多个字段,这些字段大部分是字符串数字,也可以是list,比如端口下放行的vlan )
它有很多优点,解决了很多实际的问题。让我们慢慢来揭开它神秘的面纱。
这里面也都讲了安装与用法,还有实操实验,非常的友好。
第八章为 Netmiko 详解
Netmiko 是什么???
Python的网络设备信息采集利器:Netmiko
Netmiko 是一个基于 Paramiko 的 Python 模块,可以用于在网络设备上运行命令和配置。它支持多种网络设备,如 Cisco、Juniper、Aruba、HP、PaloAlto 等,可以通过 SSH 或 Telnet 连接到设备,并执行命令和配置。Netmiko 还允许用户自定义操作和配置文件,方便对不同设备进行定制化的操作。
网工与网络设备最习惯的交互方式就是CLI,通过SSH或者Telnet登录到设备,执行命令,实现信息的获取和配置的推送,是网工最熟悉的工作方式。
所以基于CLI的网络自动化开发,也成为了网工入门NetDevOps的必经之路与最优之解。
Python基于CLI模式与网络设备进行交互的工具包有很多,而netmiko与paramiko无疑是这类工具包中的两颗璀璨明珠。
这里面通样也都讲了安装与用法,还有实操实验,非常的友好。
第九章为 Nornir 详解
Nornir是什么???
Nornir - 网络设备信息收集
Nornir是一个基于Python的网络自动化框架,主要用于快速、高效地编写自动化任务、脚本和工具。Nornir提供了丰富的API和插件,可以轻松地跨多个供应商和协议访问网络设备、执行命令、收集信息、审计配置等任务。Nornir还支持并发执行、定时任务和多线程处理等特性,可以大大提高网络管理的效率和可靠性。Nornir是一个基于Python的网络自动化框架,主要用于快速、高效地编写自动化任务、脚本和工具。Nornir提供了丰富的API和插件,可以轻松地跨多个供应商和协议访问网络设备、执行命令、收集信息、审计配置等任务。Nornir还支持并发执行、定时任务和多线程处理等特性,可以大大提高网络管理的效率和可靠性。
作为网工,学会通过执行脚本,可以自动化的完成日常一些设备相关配置或信息收集等工作,可以说是事半功倍。
Nornir就是这样一个自动化网络运维工具。按照官网上的说明:
Nornir是用python编写的自动化框架,可与python一起使用。Nornir旨在通过提供一个纯Python框架来解决这些问题。
官网:Welcome to nornir’s documentation! — nornir 3.0.0 documentation
这里面通样也都讲了安装与用法,还有实操实验,非常的友好。
第十章为 NETCONF 详解
NETCONF是什么???
NETCONF - 网络配置协议
NETCONF (Network Configuration Protocol) 是一种网络配置协议,用于对网络设备进行配置和管理。它定义了一种基于XML的数据模型和协议,用于对网络设备进行配置、监控和管理。NETCONF可以被用于配置各种网络设备,如路由器、交换机、防火墙等,并且它具有可靠性、安全性和可扩展性的优点。此外,NETCONF还提供了一组标准操作和通信机制,以确保网络设备之间的互操作性。NETCONF (Network Configuration Protocol) 是一种网络配置协议,用于对网络设备进行配置和管理。它定义了一种基于XML的数据模型和协议,用于对网络设备进行配置、监控和管理。NETCONF可以被用于配置各种网络设备,如路由器、交换机、防火墙等,并且它具有可靠性、安全性和可扩展性的优点。此外,NETCONF还提供了一组标准操作和通信机制,以确保网络设备之间的互操作性。
网络配置协议NETCONF(Network Configuration Protocol)为网管和网络设备之间通信提供了一套协议,网管通过NETCONF协议对远端设备的配置进行下发、修改和删除等操作。网络设备提供了规范的应用程序编程接口API(Application Programming Interface),网管可以通过NETCONF使用这些API管理网络设备。
NETCONF是基于可扩展标记语言XML(Extensible Markup Language)的网络配置和管理协议,使用简单的基于RPC(Remote Procedure Call)机制实现客户端和服务器之间通信。客户端可以是脚本或者网管上运行的一个应用程序。服务器是一个典型的网络设备。
为什么需要NETCONF?
云时代对网络的关键诉求之一是网络自动化,包括业务快速按需自动发放、自动化运维等。传统的命令行和SNMP已经不适应云化网络的诉求。在网络自动化方面,NETCONF越来越受欢迎,并被广泛采用。
NETCONF应运而生
为了弥补传统命令行和SNMP的缺陷,基于可扩展标记语言XML(Extensible Markup Language)的NETCONF协议应运而生。其优点如下:
- NETCONF采用分层的协议框架,更适用云化网络按需、自动化、大数据的诉求。
- NETCONF协议以XML格式定义消息,运用RPC机制修改配置信息,这样既能方便管理配置信息,又能满足来自不同制造商设备之间的互操作性。
- NETCONF协议基于YANG模型对设备进行操作,可减少由于人工配置错误引起的网络故障。
- NETCONF提供了认证、鉴权等安全机制,保证了消息传递的安全。
- NETCONF支持对数据的分类存储和迁移,支持分阶段提交和配置隔离。实现事务机制验证回滚。配置整体生效,可以缩短对网络业务的影响时间。
- NETCONF定义了更丰富的操作接口,并支持基于能力集进行扩展。不同制造商设备可以定义自己的协议操作,以实现独特的管理功能。
NETCONF基本网络架构
NETCONF基本网络架构如下图所示,整套系统必须包含至少一个NMS(Network Management System)作为整个网络的网管中心,NMS运行在NMS服务器上,对设备进行管理。
这里面通样也都讲了安装与用法,还有实操实验,非常的友好。
第十一章为 RESTCONF 详解
RESTCONF是什么???
RESTCONF - 基本网络架构
RESTCONF(RESTful Configuration Protocol)是一种基于RESTful风格的网络设备配置协议。它是一种新型的网络设备管理协议,可以用来配置、管理和监视网络设备。RESTCONF使用HTTP协议进行通信,支持GET、PUT、POST和DELETE等RESTful风格的操作,使用YANG数据模型来表示网络设备的配置和状态信息。它提供了一种简单、灵活和易于使用的方式来管理设备,被广泛应用于SDN(软件定义网络)和NFV(网络功能虚拟化)等技术中。RESTCONF(RESTful Configuration Protocol)是一种基于RESTful风格的网络设备配置协议。它是一种新型的网络设备管理协议,可以用来配置、管理和监视网络设备。RESTCONF使用HTTP协议进行通信,支持GET、PUT、POST和DELETE等RESTful风格的操作,使用YANG数据模型来表示网络设备的配置和状态信息。它提供了一种简单、灵活和易于使用的方式来管理设备,被广泛应用于SDN(软件定义网络)和NFV(网络功能虚拟化)等技术中。
之前在介绍NetConf的时候,我们知道在NetConf中定义了数据集(datastore)的概念,数据集的作用是用来存储一份配置数据的备份,确保设备能从开机时的初始状态进入到它能正常运行时的工作状态(类似于改了配置后需要write memroy,不然重启设备后配置会丢失)。而针对数据集的操作又引入了CRUD这一概念,所谓CRUD是Create、Read、Update、Delete四种操作的首字母缩写,用来表示数据集支持创建、读取、更新、删除四种操作。除此之外,在NetConf的基础上,IETF又在RFC 6020中提出了YANG这个专为NetConf打造的建模语言,YANG语言定义了数据存储内容、配置、状态数据、RPC操作,以及事件通知的标准,为CRUD访问的数据集里的数据制定了统一的格式。
这里面通样也都讲了安装与用法,还有实操实验,非常的友好。
全书总结
总体感觉,个人感想,非常的不错,包含了基础与实战,对一名新手真的是特别的友好,非常的推荐。
图书感觉、图书简介和推荐详情可去看:【社区图书馆】《网络工程师的Python之路:网络运维自动化实战(第2版)》
版权归原作者 A-刘晨阳 所有, 如有侵权,请联系我们删除。