【社区图书馆】记:读完《网络工程师的Python之路:网络运维自动化实战(第2版)》读后感【书评】

news2024/12/23 10:04:12

在这里插入图片描述

🍁博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!

文章目录

  • 书籍整体感受
  • 书籍中分了11大章:
    • 第一章为 Python的安装和使用
    • 第二章为 Python的基本语法
    • 第三章为 Python的进阶语法
  • 总结前面
    • 第四章和第五章为 网络运维实战
    • 第六章为 内置模块与第三方模块
    • 第七章为 TextFSM 详解
    • 第八章为 Netmiko 详解
    • 第九章为 Nornir 详解
    • 第十章为 NETCONF 详解
    • 第十一章为 RESTCONF 详解
  • 全书总结

书籍整体感受

  整体来说还是很不错的,很厚一本书,共计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版)》

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/553803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot+vue实习管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的实习管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&a…

数据库链接池从100ms优化到3ms!

数据库连接池的配置是开发者们常常搞出坑的地方,在配置数据库连接池时,有几个可以说是和直觉背道而驰的原则需要明确。 1万并发用户访问 想象你有一个网站,压力虽然还没到Facebook那个级别,但也有个1万上下的并发访问——也就是…

开发中造成空指针的常见用法,如何避免

1. 前言 《手册》的第 7 页和 25 页有两段关于空指针的描述: 【强制】Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 【推荐】防止 NPE,是程序员的基本修养,注意 NPE 产生的场景: 返回类型为…

AIGC周报|让AI来画《海贼王》;苹果限制员工使用ChatGPT;李彦宏:不担心大模型会让工作消失

AIGC(AI Generated Content)即人工智能生成内容。近期爆火的 AI 聊天机器人 ChatGPT,以及 DallE 2、Stable Diffusion 等文生图模型,都属于 AIGC 的典型案例,它们通过借鉴现有的、人类创造的内容来快速完成内容创作。 …

实现BIM的Revit软件学习资料

实现BIM的Revit软件学习资料 一、BIM与Revit的关系二、Revit使用方法总结(一)快捷键(二)一些技巧 一、BIM与Revit的关系 链接: BIM与Revit是什么关系?看完秒懂系列! REVIT是实现BIM理念的工具之一。 二、Revit使用方…

pyton打包成exe程序简易教程

我们知道,Python程序需要有python环境才能够运行的,但当我们开发出一个程序之后,给到用户 那么用户是不会去添加这个python环境的。 所以为了用户也能够正常使用,我们就需要将这个程序打包成exe程序。 1.打包之前需要先下载一个模…

Java面试知识点(全)-dubbo面试知识点

Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。 面试官问你如果这个都不清楚,那下面的就没必要问了。 官网:http://dubbo.apache.org 为什么要用Dubbo&#xff1f…

基于 Socket 接口实现自定义协议通信

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 根据自定义的协议规范,使用 Socket 编程接口编写基本的网络应用软件。 掌握 C 语言形式的 Socket 编程接口用法,能够正确发送和接收网络数据包 开发一个客户端,实现人机交互界面和与服务器的…

ChatGPT助力Midjourney解锁惊喜创意

[请wx关注“云智AI助手”关注我们 │ 谢谢支持 ] Cloud wisdom, AI assistant 通过结合这两个强大的基础AI模型的优势,我们能够获得令人惊叹的效果。现在,你将有机会亲眼见证Midjourney和ChatGPT共同合作的潜力。它们能够协同工作,相互补充&…

Shader Graph18-反射、折射函数

一、打开Unreal,新建Material叫做DemoReflectionRefraction 首先是看一下引擎内置的反射,Base Color设置为1是白色,Metallic设置为1金属强度为最大,Roughness为0粗糙度为最小,那么最后的结果球面上显示的就是周围环境。…

目标检测复盘 --3. Fast RCNN

RCNN的CNN部分使用AlexNet作为backbone来提取特征,Fast RCNN使用了VGG16来作为backboneRCNN将2000个框送入网络提取特征,Fast RCNN是将图像送入CNN来提取特征得到一个特征图将SS(Selective Search)算法获取的提议框映射到上面的特征图上,获取…

Java API 基础

Java API 基础 一、相关知识学习 Java程序员在开发Java程序时,只需要安装有JDK,就可以在程序中使用import关键字导入Java API 中指定的包并在自己的程序中使用这些包中定义的各种类和接口。 1、 Java API 包 Java API 包 说明 java.accessibility 接…

微信小程序-页面跳转navigator组件

官方文档地址:https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/route.html 在官方文档当中有提到一个叫做页面栈的这么一个东西,就是一个水杯,进入一个页面就是入到页面栈,退出就是从页面栈当中移除&…

WebTerminal功能实现与代码演示(基于Golang和Xterm.js)

文章目录 目的方案说说明实现过程与代码演示前端页面(Xterm.js)后端服务(Golang) 编译与测试总结 目的 WebTerminal是一个比较有意思的功能,让我们可以脱离专门的软件,在浏览器中就可以与Linux设备进行交互…

【运维知识进阶篇】集群架构-Rewrite重定向

Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。 分以下几种场景使用 1、地址跳转,用户访问一个URL,将其定向到另一个URL 2、协议跳转,用户通过http协议请求网站时,…

程序员不得不消化的基本概念:线程与协程,并行与并发

这是程序员的基本常识,这都搞不清楚,就不配为码农,就不配混CSDN。为人君者,招聘时可以以此为入门问题。 名词解释 在中文里,并发与并行很难望文生义,从字面上很难了解确切含义,貌似区别不大&am…

单机Redis、Redis持久化、Redis主从模式、Redis哨兵模式、Redis分片集群

一、单机Redis 数据库分类: 到目前为止,所有数据库分为两大类: RDBMS:关系型数据库,即传统数据库。 像MySQL、SQLServer、DB2、Sybase、SQLite、Oracle等等 以表的形式存储数据,表与表之间要维护数据的关系…

为什么投稿 SCI 被审稿人通过,又被编辑拒收?

有些作者在投稿过程中会遇到各种坑,不过有一种坑却最让作者痛心疾首,不知道大家有没有遇到过这样的状况: 审稿人建议接收,编辑却拒稿了; 或者审稿人建议拒稿,编辑却让自己改改再投? 有国外学者…

微服务: Seata AT springCloud整合分布式事务以配置方式(中篇)

目录 上篇: 安装seata 并启动成功的传送门 1. 前言: 2. springCloud 使用seata at 的步骤如下 第一步 查看springCloud版本 第二步添加maven依赖 第三步 添加yml配置 第四步: 配置数据源(druid) 第五步 修复一个警告 第六步: 启动后 看看日志是否成功 上篇: 安装seat…

边缘计算盒子功能介绍,为什么要用边缘计算盒子?

边缘计算盒子(Edge Computing Box)是一种用于边缘计算设备。边缘计算是一种分布式计算模型,它将计算和数据处理能力从传统的集中式云计算数据中心延伸到网络边缘的设备上,以便更快地响应实时数据处理需求和减少对云服务的依赖。 边…