网络运维总复习结构

目录

前言 

基础运维技能

3种常用的字符编码,编码间的切换

简述文件的操作流程,三个常用的文件操作方法

open函数中的mode参数表示什么,mode的四个取值

阐述配置文件的格式,解析配置文件主要用到哪个模块的哪个类,简述该类的三种方法

简述json模块中解析josn常用的四个函数

如何安装psutil模块,简述使用psutil可以监控系统的哪些信息

阐述使用watchdog监控指定目录/文件变化的工作原理

在subprocess.Popen类构造函数的参数中,stdin、stdout、stderr的默认取值、含义、如何将子进程的输出传给父进程处理

简述日志的作用,通过日志记录事件时,通常需要记录哪些方面

在logging模块中的日志级别和排序

在logging模块中,什么是记录器、处理器、格式化器,他们之间的关系,相关语句

简述xmltodict如何处理XML数据

使用pyftp模块一行命令快速搭建FTP服务器可以进行哪些设置,列举三个使用pyftpdlib API编程比一行命令更丰富的功能

简述编程实现邮件发送的步骤,并具体说明使用了哪些类或方法

进程、线程、协程

multiprocessing模块实现进程同步的类及其主要的方法

multiprocessing模块实现进程通信的类及其主要方法

threading模块实现线程同步的类及其主要方法

threading模块实现多线程通信的类及其主要方法

多进程和多线程分别适用于什么类型的作业

协程的概念

进程、线程、协程的对比

协程的应用场景

自动化运维工具 ansible

ansible实现主机管理的安装要求

定义主机清单

ansible免密登录

ansible ad-hoc模式的常用命令

YMAL文件格式

编写简单的playbook

定时任务模块 (APScheduler) 远程执行命令 (Paramiko) 分布式任务队列 (Celery)

APScheduler

Paramiko

Celery


前言 

        该篇文章是网络运维课程总复习的结构,希望能够为进行期末复习或者对网络运维感兴趣的同学或专业人员提供一定的帮助。

  • 基础运维技能

    • 3种常用的字符编码,编码间的切换

      • ASCII

      • UTF-8

      • UTF-16

    • 简述文件的操作流程,三个常用的文件操作方法

      • 打开文件open( )

      • 对文件进行操作(写、删、读、追加、修改)

        • write方法:向文件中写入内容

        • read方法:读取文件中的字符

        • seek方法:移动文件指针到某个位置

      • 关闭文件close()

    • open函数中的mode参数表示什么,mode的四个取值

      • 表示打开文件的模式,如读取、写入、追加、二进制

        • ‘w’模式:只可写,不可读

        • ‘r’模式:只可读,不可写

        • ‘a’模式:读取和追加

        • ‘b’模式:使用二进制进行读取或写入操作

    • 阐述配置文件的格式,解析配置文件主要用到哪个模块的哪个类,简述该类的三种方法

      • 文件格式是指用于存储应用程序或系统配置参数的文件,包含键值对,包括INI、YAML、JSON等格式

        • 主要用到了Configparser模块中的configparser类

          • read():读取配置文件

          • get():获取指定的配置项的值

          • set():修改指定的配置项的值

    • 简述json模块中解析josn常用的四个函数

      • josn.loads()

        • 该函数用于将JOSN字符串解析为python对象,接受一个字符串作为输入,输出一个python数据结构

      • josn.load()

        • 该函数用于从文件中读取json数据并解析为python对象,接受一个文件对象作为输入,将文件对象中的josn数据,输出一个python数据结构

      • josn.dumps()

        • 该函数用于将python对象转换为josn字符串,接受一个python对象作为输入,并返回一个对应的josn字符串

      • josn.dump()

        • 该函数用于将python对象转换为josn格式,并将其写入到文件中,它接受一个python对象和文件对象作为输入,将python对象转换为josn字符串并写入到文件中

    • 如何安装psutil模块,简述使用psutil可以监控系统的哪些信息

      • 安装psutil

        • pip install psutil

        • pip3 install psutil

        • easy_install psutil

      • 可以监控的信息

        • CPU占用率

        • 内存容量和占用率

        • 磁盘分区和磁盘占用率

        • 网络连接信息:本机IP地址、远程IP地址、连接状态等

        • 系统用户信息:用户ID、用户组、用户名等

        • 系统进程信息:进程ID、进程启动时间、进程状态、进程内存使用情况

    • 阐述使用watchdog监控指定目录/文件变化的工作原理

      • watchdog是一个python库,用于监控文件系统上的文件变化,从而可以监听指定目录或文件的变化并发出通知,使用了操作系统的文件监控机制

      • 原理

        • Step1:创建监控对象,使用(watchdog.observers.Observers)对象来创建监控对象)

        • Step2:开始监控,调用observer.start()开始监控目录或文件变化。

        • Step3:处理事件,当监控到目录或文件发生变化时,Myhander类中重载的回调函数将被调用

        • Step4:结束监控,调用observer.stop()停止并使用observer.join()等待任务完成

    • 在subprocess.Popen类构造函数的参数中,stdin、stdout、stderr的默认取值、含义、如何将子进程的输出传给父进程处理

      • 默认取值都是none,表示子进程的输入、输出、错误流都会继承父类的标注I/O流

      • 如果要将子进程的输出传给父进程处理,可以使用Popen对象的communicate()方法,该方法将等待子进程完成并返回一个元组,其中包括子进程的stdout和stderr输出

    • 简述日志的作用,通过日志记录事件时,通常需要记录哪些方面

      • 概念

        • 日志是一个记录系统或应用程序运行时发生时间的重要工具,通过记录事件,我们可以理解应用程序在运行过程中发生的情况,并快速发现和解决潜在问题

      • 作用

        • 故障排除

        • 性能分析

        • 安全监控

        • 业务分析

      • 需要记录的方面

        • 时间戳

        • 事件级别

        • 事件内容

        • 上下文信息

        • 其他

    • 在logging模块中的日志级别和排序

      • Critical>Error>Warning>info>debug>notset

    • 在logging模块中,什么是记录器、处理器、格式化器,他们之间的关系,相关语句

      • 记录器

        • 将日志事件发送到日志系统的接口,提供对日志系统配置和状态的访问

        • logger = logging.getLogger(‘’)

      • 处理器

        • 决定将日志记录发送到哪个位置

        • #创建处理器 handler = logging.FileHandler(‘mylog.txt’) #添加处理器 logger.addHandler(handler)

      • 格式化器

        • 决定了记录日志事件的样式,使用setFormatter()方法来添加格式化器

        • # 创建格式化器 formatter = logging.Formatter ( ) # 添加格式化器 handler.setFormatter(formatter)

      • 关系

        • 记录器可以有多个处理器、每个处理器可以有多个格式化器、每个格式化器可以有一个格式化字符串

    • 简述xmltodict如何处理XML数据

      • xmltodict是一个python库,可以将xml数据转换为python字典形式,使得xml数据可以更加方便地处理。 具体而言,xmtodict可以将xml数据转换为嵌套python字典和列表的组合,在字典中,xml元素的tag和属性被转换为字典的键和值,而xml元素中的文本内容成为字典的值,如果xml中存在子元素,他们将被转换为一个新的字典,并被赋值给其父元素的键。

    • 使用pyftp模块一行命令快速搭建FTP服务器可以进行哪些设置,列举三个使用pyftpdlib API编程比一行命令更丰富的功能

      • python -m pyftpdlib 启动一个默认的FTP服务器,监听IP为0.0.0.0 端口号为21 -p 端口号 -P 密码 -a 用户名和密码 -w 指定ftp的工作目录

      • API更丰富的功能: ① 文件上传和下载的事件处理 ② 权限和用户管理 ③ 自定义命令和响应

    • 简述编程实现邮件发送的步骤,并具体说明使用了哪些类或方法

      • Step1:导入相关模块 smtplib模块,使用”from smtplib import SMTP“

      • Step2:创建SMTP对象 ,使用SMTP类的构造函数创建SMTP对象 smtp = SMTP(‘ ’,port=)

      • Step3:连接SMTP服务器,使用SMTP对象的connect方法连接SMTP服务器 smtp.connect ( )

      • Step4:登录SMTP服务器,使用SMTP对象的"login()"方法登录SMTP服务器 smtp.login(' ',' ')

      • Step5:创建邮件对象。使用SMTP的email模块来创建邮件消息对象,可以使用MIMEText、MIMEImage、MIMEMultipart等类

      • Step6:发送邮件。使用SMTP对象的"sendmail()"方法发送邮件 smtp.sendmail()

      • Step7:退出SMTP服务器。使用SMTP对象的‘quit()’方法退出SMTP服务器 smtp.quit()

  • 进程、线程、协程

    • multiprocessing模块实现进程同步的类及其主要的方法

      • Lock

        • acquire()

        • release()

      • Condition

        • acquire()

        • release()

        • wait()

        • notify

      • Semaphore

        • acquire()

        • release()

      • Event

        • set()

        • clear()

        • is_set()

        • wait()

    • multiprocessing模块实现进程通信的类及其主要方法

      • Pipe

        • Pipe()

        • send(obj)

        • recv()

        • close()

      • Queue

        • Queue()

        • put()

        • get()

        • empty()

        • full()

        • qsize()

      • Manager

        • Manager()

        • Value()

        • Array()

        • Namespace()

        • dict()

        • list()

    • threading模块实现线程同步的类及其主要方法

      • Lock

        • acquire()

        • release()

      • RLock

      • Condition

        • acquire()

        • release()

        • wait()

        • notify()

      • Semaphore

        • acquire()

        • release()

      • Event

        • set()

        • clear()

        • is_set()

        • wait()

    • threading模块实现多线程通信的类及其主要方法

      • Queue

        • Queue()

        • put()

        • get()

        • empty()

        • full()

        • qsize()

      • Condition

        • acquire()

        • release()

        • wait()

        • notify()

      • Event

        • set()

        • clear()

        • is_set()

        • wait()

    • 多进程和多线程分别适用于什么类型的作业

      • 多进程:CPU密集型,需要大量CPU计算的操作; 因为多进程能够充分利用多核CPU带来的优势,将任务拆分为多个进程并行处理,能够大大地提高程序运行的效率

      • 多线程:I/O密集型,需要大量I/O操作的任务 因为I/O操作相对于计算操作而言,计算时间短、等待时间长,多线程能够在等待I/O操作的时候切换到其他线程进行操作,从而提高程序的相应速度

    • 协程的概念

      • 协程指的是一种用户态的轻量级线程,也成为微线程。相比于传统的线程,协程的创建和销毁成本更低,占用的内存资源更少、可以支持更高的并发量

    • 进程、线程、协程的对比

      • 进程

        • 操作系统分配资源的基本单位,每个进程都有自己独立的地址空间、数据栈、代码段、堆栈等,互相之间不能直接访问和共享数据,需要通过IPC机制传递数据。进程是操作系统提供的一种强制抢占的并发方式,进程的调度和切换由操作系统负责

        • 优点: 可以充分利用多核CPU的计算能力,提高处理效率 可以实现强隔离,不同进程之间数据安全可靠

        • 缺点: 进程切换过程中需要保存和恢复当前进程的所有信息,开销较大; 进程间通信开销较大

      • 线程

        • 在同一个进程中运行的执行单元,是操作系统调度的最小单位。 共享进程的内存空间和资源,可以相互访问和修改共享数据。 切换不需要切换地址空间,开销较小。 调度和切换由操作系统负责

        • 优点: 比进程更轻量级,切换开销相对较小; 共享进程的内存空间和资源,可以方便地共享数据

        • 缺点: 线程之间的并发控制较为复杂,需要使用锁、信号量等机制实现同步和互斥; 容易出现死锁、竞争等问题

      • 协程

        • 一种轻量级的线程,也成为微线程。 协程的创建和销毁成本更低,占用的内存资源更少,可以支持更高的并发量。 协程的任务切换在程序内部完成,不需要操作系统的支持,因此协程的开销很小。 Python中协程一般通过生成函数实现

        • 优点: 创建和销毁成本低,占用的内存资源少: 没有线程的上下文切换开销,比线程更高效; 协程可以避免线程之间的共享状态问题

        • 缺点: 不能利用多核CPU,只能实现单线程的并发

    • 协程的应用场景

      • 适用于需要高并发、高性能、高流量的网络编程场景,特别是I/O密集型程序

        • 高并发爬虫

        • 异步网络编程

        • 高并发Web服务器

        • 实时消息处理

  • 自动化运维工具 ansible

    • ansible实现主机管理的安装要求

      • 安装ansible

        • yum install -y release yum install -y ansible

      • 配置ssh免密

        • ssh-keygen ssh-copy-id user@hosts ssh user@hosts

      • 配置主机清单

        • vim inventory [组] 用户名

    • 定义主机清单

      • vim inventory [组] 用户名

    • ansible免密登录

      • ssh-keygen ssh-copy-id user@hosts ssh user@hosts

    • ansible ad-hoc模式的常用命令

      • ping模块

      • shell模块

      • command模块

      • apt模块

      • yum模块

      • copy模块

      • fetch模块

    • YMAL文件格式

      • 注释

        • YAML文件可以包含注释行,以"#"字符开头,可以对文件或特定部分进行说明。

        • # 这是一个示例 YAML 文件

      • 键值对

        • YAML文件使用"键: 值"的格式表示键值对,冒号后面可以有一个或多个空格。

        • name: John Doe age: 30

      • 列表

        • 使用"-"符号开头表示一个列表项。列表项可以包含键值对或简单的值

        • fruits: - apple - orange - banana

      • 嵌套结构

        • YAML文件可以使用缩进来表示嵌套结构。缩进使用空格,而不是制表符。

        • person: name: John Doe age: 30 address: street: 123 Main St city: New York

      • 多行文本

        • 多行文本: YAML文件支持多行文本,可以使用管道符号(|)或折叠符号(>)表示。

        • description: | This is a multi-line description.

    • 编写简单的playbook

      • 复制文件

      • 创建用户

      • 使用循环创建多个用户

      • 执行playbook

        • ansible-playbook -i 主机 xxx.yml

  • 定时任务模块 (APScheduler) 远程执行命令 (Paramiko) 分布式任务队列 (Celery)

    • APScheduler

      • 概念

        • 是一款Python的任务调度框架,可以在指定的事件或间隔内执行任务

      • 功能

        • 定时任务调度

        • 循环任务调度

        • 异步任务调度

        • 分布式任务调度

        • 多种任务执行方式

    • Paramiko

      • 概念

        • 是Python编写的SSH2协议的实现库,能够实现SSH客户端和服务器的连接、SFTP传输等功能

      • 功能

        • SSH客户端和服务器的连接

        • SFTP传输

        • 加密和解密

        • 协议支持

        • 可扩展性

    • Celery

      • 概念

        • 基于python的任务队列框架,用于实现异步处理、定时任务调度和分布式任务处理等功能,适合处理高并发、需要异步执行、定期执行或分布式执行的任务,可以极大地提升系统性能和扩展性

      • 功能

        • 异步处理

        • 定时任务调度

        • 分布式任务处理

        • 延迟任务处理

        • 多个任务队列

      • 如何实现不同的队列执行不同的任务

        • 方法

          • 在Celery的配置文件中设置任务队列

          • 在定义任务时指定队列

          • 启动worker并指定队列

        • 原理

          • Celery通过定义不同的任务队列实现了不同队列执行不同任务的功能。 支持使用任务队列分类不同的任务以及优先策略,任务队列与任务的关系是一对多的关系,一个任务可以在多个队列中运行

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

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

相关文章

企业级docker应用注意事项

现在很多企业使用容器化技术部署应用,绕不开的docker技术,在生产环境docker常用操作总结。参考:https://juejin.cn/post/7259275893796651069 1. 尽可能使用官方镜像 在docker hub 官方 使用后面带有 DOCKER OFFICIAL IMAGE 标签的镜像&…

SOC FPGA介绍及开发设计流程

目录 一、SoC FPGA简介 二、SoC FPGA开发流程 2.1 硬件开发 2.2 软件开发 一、SoC FPGA简介 SOC FPGA是在FPGA架构中集成了基于ARM的硬核处理器系统(HPS),包括处理器、外设和存储器控制器。相较于传统的仅有ARM处理器或 FPGA 的嵌入式芯片,SOC FPGA既…

CSS Flex 笔记

1. Flexbox 术语 Flex 容器可以是<div> 等&#xff0c;对其设置属性&#xff1a;display: flex, justify-content 是沿主轴方向调整元素&#xff0c;align-items 是沿交叉轴对齐元素。 2. Cheatsheet 2.1 设置 Flex 容器&#xff0c;加粗的属性为默认值 2.1.1 align-it…

jenkinsfile指定jenkins流水线的构建号

背景 升级Jenkins过程中不小心导致流水线配置文件job目录丢失, 重新配置流水线后所有流水线构建号码都从1开始构建了, 然而我们的产品关联了jenkins构建号,重新从1 构建会导致各种问题. 解决方案 在Jenkinsfile文件中指定流水线的构建号为一个不存在的数字, 这样就不会冲突了…

1,复杂度和简单排序算法【p2-p3】

复杂度和简单排序算法 1&#xff0c;时间复杂度1.1选择排序1.2冒泡排序1.3异或运算1.3.1性质&#xff1a;1.3.2案例例1例2 1.4插入排序1.5二分法1.5.1在一个有序数组中&#xff0c;找某个数是否存在1.5.2在一个有序数组中&#xff0c;找>某个数最左侧的位置1.5.3局部最小值问…

Individual household electric power consumption个人家庭用电量数据挖掘与时序预测建模

今天接到一个任务就是需要基于给定的数据集来进行数据挖掘分析相关的计算&#xff0c;并完成对未来时段内数据的预测建模&#xff0c;话不多说直接看内容。 官方数据详情介绍在这里&#xff0c;如下所示&#xff1a; 数据集中一共包含9个不同的字段&#xff0c;详情如下&#…

手把手一起实现Visual Studio 2022本地工程提交(和克隆)Gitee

1、VS2022本地工程提交Gitee 登录Gitee&#xff0c;创建空仓库&#xff0c;如图&#xff1a; 新建仓库&#xff1a; 打开Visual Studio 2022创建的工程&#xff0c;点击创建Git存储库&#xff1a; 复制Gitee仓库URL&#xff1a; 将URL填入&#xff0c;点击创建并推送&#xff…

Windows 10 安装 PostgreSQL 12.x 报错 ‘psql‘ 不是内部或外部命令 由于找不到文件libintl-9.dll等问题

目录 序言一、问题总结问题 1 psql 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。问题 2 “由于找不到文件libintl-9.dll&#xff0c;无法继续执行代码&#xff0c;重新安装程序可能会解决此问题。“1、卸载2、安装3、安装 Stack Builder &#xff08;这个可…

LeetCode.189(轮转数组)

对于轮转数组这个题&#xff0c;文章一共提供三种思路&#xff0c;对于每种思路均提供其对应代码的时间、空间复杂度。 目录 1. 创建变量来保存最后一个数&#xff0c;并将其余数组向前挪动一位 &#xff1a; 1.1 原理解析&#xff1a; 1.2 代码实现&#xff1a; 2.创建一个…

NFT和数字藏品的安全方案解析

一、NFT和数字藏品 01 NFT是什么&#xff1f; NFT 是Non-Fungible Tokens 的缩写&#xff0c;意思是不可互换的代币&#xff0c;它是相对于可互换的代币而言的。不可互换的代币也称为非同质代币。什么是可互换的代币&#xff1f;比如BTC&#xff08;比特币&#xff09;、ETH&…

前端,js , Error in created hook: TypeError ,有bug了

怎么兄弟&#xff0c;遇到bug了&#xff1f;&#xff1f;&#xff1f;你开心吗&#xff0c;哈哈哈哈

如何在MacBook上彻底删除mysql

好久以前安装过&#xff0c;但是现在配置mysql一直出错&#xff0c;索性全部删掉重新配置。 一、停止MySQL服务 首先&#xff0c;请确保 MySQL 服务器已经停止运行&#xff0c;以免影响后续的删除操作。 sudo /usr/local/mysql/support-files/mysql.server stop如果你输入之…

kotlin 编写一个简单的天气预报app(四)

编写界面来显示返回的数据 用户友好性&#xff1a;通过界面设计和用户体验优化&#xff0c;可以使天气信息更易读、易理解和易操作。有效的界面设计可以提高用户满意度并提供更好的交互体验。 增加城市名字的TextView <TextViewandroid:id"id/textViewCityName"…

MYSQL 分区如何指定不同存储路径(多块磁盘)

理论 可以针对分区表的每个分区指定存储路径&#xff0c;对于innodb存储引擎的表只能指定数据路径&#xff0c;因为数据和索引是存储在一个文件当中&#xff0c;对于MYISAM存储引擎可以分别指定数据文件和索引文件&#xff0c;一般也只有RANGE、LIST分区、sub子分区才有可能需要…

开心档之CSS !important 规则

CSS !important 规则 CSS !important 规则 CSS是网页中最常用的样式语言&#xff0c;用来改变网页的颜色、字体、布局等等。但是当多个样式规则作用于同一个元素上时&#xff0c;由于优先级的差异&#xff0c;可能会出现样式被覆盖的情况。为了解决这个问题&#xff0c;CSS中提…

Kyuubi入门简介

一、官方简介 HOME — Apache Kyuubi 二、概述 1、一个企业级数据湖探索平台 2、一个高性能的通用JDBC和SQL执行引擎 3、一个基于spark的查询引擎服务 三、优点 1、提供hiveserver2查询spark sql的能力&#xff0c;查询效率更为高效&#xff0c;首次构建连接时会持续保持连…

css中隐藏页面中某一个元素有什么方法?

我们可以使用css的z-index属性&#xff0c;将元素的-index去给它设置一个负值&#xff0c;使它隐藏在其他元素的后面。使用css样式进行隐藏我们可以使用display这个属性。&#xff08;1&#xff09;使用display:none完全进行隐藏元素&#xff0c;并且不占据空间也不会影响页面布…

628. 三个数的最大乘积

628. 三个数的最大乘积 class Solution {public int maximumProduct(int[] nums) {Arrays.sort(nums); return Math.max(nums[nums.length-1]*nums[nums.length-2]*nums[nums.length-3],nums[0]*nums[1]*nums[nums.length-1]);} }

c语言位段知识详解

本篇文章带来位段相关知识详细讲解&#xff01; 如果您觉得文章不错&#xff0c;期待你的一键三连哦&#xff0c;你的鼓励是我创作的动力之源&#xff0c;让我们一起加油&#xff0c;一起奔跑&#xff0c;让我们顶峰相见&#xff01;&#xff01;&#xff01; 目录 一.什么是…

聊聊这几年的科技风口

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 数数这几年的科技风口&#xff1a;AR&#xff08;包括什么MR、VR&#xff09;、区块链(包括后来的什么web3)、元宇宙到现在的AI&#xff0c;下面逐一谈谈…