python运维开发 业务服务监控详解

        业务监控是运维体系中最重要的环节,是保证业务服务质量的关键手段,python在监控方面提供了大量的第三方工具,可以帮助我们快速、有效的开发企业级服务监控平台

一、文件内容差异对比方法

difflib作为python的标准库模块,无需安装,作用是对比文本之间的差异,且支持输出可读性比较强的HTML文档,与linux下的diff命令相似。我们可以使用difflib对比代码、配置文件的差别,在版本控制方面是非常有用。Python2.3或更高版本默认自带difflib模块,无需额外安装

两个字符串的差异对比
import difflib
# 定义字符串1
text1 = """text1:
This module provide classes and functions for comparing sequences.
including HTML and context and unifed diffs.
difflib document v1.0
add string
"""
text1_lines = text1.splitlines()    # 以行进行分割,以便进行对比
# 定义字符串2
text2 = """text2:      
This module provide classes and functions for comparing sequences.
including HTML and context and unifed diffs.
difflib document v2.0
add string
"""
text2_lines = text2.splitlines()
d = difflib.Differ()   # 创建Differ()对象
diff = d.compare(text1_lines,text2_lines)   # 采用compare方法对字符串进行比较
print('\n'.join(list(diff)))

 采用Differ()类对两个字符进行比较,另外difflib

的SequenceMacher()类支持任意类型序列的比较,HtmlDiff()类支持将比较输出为HTML格式

 生成美观的对比HTML格式文档

采用HtmlDiff()类的make_file()方法就可以生成美观的HTML文档,对上米昂代码进行修改

d = dofflib.Differ()
diff = d.compare(test1_lines,text2_lines)

替换成

d = difflib.HtmlDiff()
print(d.make_file(text1_lines),text2_lines)

对比nginx配置文件差异

当我们维护多个Nginx配置时,时常会对比不同版本配置文件的差异,使运维人员更加清晰的了解不同版本迭代后的更新项,实现的思路是读取两个需对比的配置文件,再以换行作为分隔符,调用difflib.HtmlDiff()生成HTML格式的差异文档。

#! /usr/bin/bash
import difflib
import sys

try:
    textfile1 = sys.argv[1]  # 第一个配置文件参数路径
    textfile2 = sys.argv[2]  # 第二个配置文件参数路径
except Exception as e:
    print("Error:"+str(e))
    print("Usage:simle3.py filename1 filename2")
    sys.exit()

def readfile(filename):    # 文件读取分隔函数
    try:
        fileHandle = open (filename,'rb')
        text=fileHandle.read().splitlines()  #读取后以进行分隔
        fileHandle.close()
        return text
    except IOError as error:
        print("Read file Error:"+str(error))
        sys.exit()

if textfile1==""or textfile2=="":
    print("Usage:simple3.py filename1 filename2")

text1_lines = readfile(textfile1)   # 调用readfile函数,获取分隔后的字符串
text2_lines = readfile(textfile2)
d = difflib.HtmlDiff()  # 创建HtmlDiff()类对象
print("d.make_file(text1_line,text2_lines)") #通过make_file方法输出HTML格式的对比结果

文件与目录差异对比方法

        当我们进行代码审计或效验备份结果时,往往需要检查原始与目标目录的文件一致性,Python的标准库已经自带了满足此需求的模块filecmp。filecmp可以实现文件,目录、遍历子目录的差异对比功能。比如报告中输出目标目录比原始多出的文件或子目录,及时文件同名也会判断是否为同一个文件(内容级对比)模块自带  无需安装

filecmp提供了三个操作方法,分别为cmp(单文件对比)、cmpfiles(多文件对比)、dircmp(目录对比),

单文件对比,采用filecmp.cmp(f1,f2[,shallow])方法,比较文件名为f1和f2的文件,相同返回True,不相同返回False,shallow默认为True,意思是只根据os.stat()方法 返回的文件基本信息进行对比,比如最后访问时间、修改时间、状态改变时间等,会忽略文件内容的对比。当shallow为False时,则os.stat()与文件内容同时进行效验

dircmp提供了三个输出报告的方法:

  1. report(),比较当前指定目录中的内容
  2. report_partial_closure(),比较当前指定目录及第一级子目录中的内容
  3. report_full_closure(),递归比较所有指定目录的内容

import filecmp
a = ""
b = ""
dirobj = filecmp.dircmp(a,b,['test.py'])

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

等保测评需要什么SSL证书

在进行信息安全等级保护(简称“等保”)测评时,选择合适的HTTPS证书对于确保网站的安全性和合规性至关重要。以下是在等保测评中选择HTTPS证书时应考虑的因素: 国产证书: 等保测评倾向于使用国产品牌的SSL证书&#x…

Linux系统编程——线程基本概念

目录 一,关于多线程 二,重新理解进程 三,线程VS进程 四,线程周边概念 4.1 线程的数据共享 4.2 线程的优点 4.3 线程的缺点 4.4 线程异常 4.5 线程用途 五,一些问题解答 如何理解将资源分配给各个线程&…

Java面试八股之MySQL的pconenct和connect有什么区别

MySQL的pconenct和connect有什么区别 在PHP中,mysql_pconnect() 和 mysql_connect() 是用来建立与MySQL数据库服务器连接的两个函数,它们的主要区别在于连接的持久性。 mysql_connect(): 这个函数每次调用都会尝试创建一个新的数据库连接。 当PHP脚本…

气象观测站:观测和记录各种气象要素

在广袤无垠的蓝天下,气象观测站如同一个个静默的守护者,默默记录着风云变幻,守护着大地的安宁。 一、气象观测站:守护天空的“千里眼” 气象观测站,顾名思义,就是专门用于观测和记录各种气象要素的站点。它…

峰与谷00

题目链接 峰与谷 题目描述 注意点 nums.length < 10000 解答思路 首先想到的是将数组中的元素都存到优先队列中&#xff0c;然后取一半的元素插入到数组奇数位置&#xff0c;再将剩下一半的元素插入到数组偶数位置即可&#xff0c;但是时间上并不理想参照题解可以从局部…

全国现状建筑数据,选中范围即可查询下载,富含建筑物位置、层数、建筑物功能、名称地址等信息!

今天分享的是一个绘制范围即可下载范围内的建筑数据下载工具&#xff0c;内含高质量建筑数据数据源&#xff0c;助力场地建设规模一目了然。 数据可视化&#xff1a; 建筑物位置、层数、建筑轮廓地图可见&#xff0c;辅助分析。 数据字段&#xff1a; 建筑高度、层数、基地面…

《C++20设计模式》享元模式

文章目录 一、前言二、享元模式1、UML类图2、实现 一、前言 《C20设计模式》书中对于享元模式个人感觉不是太清晰&#xff0c;就跟逗小孩玩似的。 享元模式模式是干什么的&#xff1f; 答 &#xff1a;牺牲性能&#xff0c;换取内存空间的技术。 相关代码可以在这里&#xf…

vs2019 无法打开项目文件

vs2019 无法打开项目文件&#xff0c;无法找到 .NET SDK。请检查确保已安装此项且 global.json 中指定的版本(如有)与所安装的版本相匹配 原因&#xff1a;缺少组件 解决方案&#xff1a;选择需要的组件进行安装完成

ACL 2024 | CoCA:自注意力的缺陷与改进

近年来&#xff0c;在大语言模型&#xff08;LLM&#xff09;的反复刷屏过程中&#xff0c;作为其内核的 Transformer 始终是绝对的主角。然而&#xff0c;随着业务落地的诉求逐渐强烈&#xff0c;有些原本不被过多关注的特性&#xff0c;也开始成为焦点。例如&#xff1a;在 T…

秒验—手机号码置换接口

功能说明 提交客户端获取到的token、opToken等数据&#xff0c;验证后返回手机号码 服务端务必不要缓存DNS&#xff0c;否则可能影响服务高可用性 调用地址 POST https://identify-verify.dutils.com/auth/auth/sdkClientFreeLogin 请求头 Content-Type &#xff1a;appli…

浅析MySQL-索引篇01

什么是索引&#xff1f; 索引是帮助存储引擎快速获取数据的一种数据结构&#xff0c;类似于数据的目录。 索引的分类 按数据结构分类&#xff1a; MySQL 常见索引有 BTree 索引、HASH 索引、Full-Text 索引。 Innodb是MySQL5.5之后的默认存储引擎&#xff0c;BTree索引类型也…

数据结构笔记第3篇:双向链表

1、双向链表的结构 注意&#xff1a;这里的 "带头" 跟前面我们说的 "头结点" 是两个概念&#xff0c;实际前面的在单链表阶段称呼不严谨&#xff0c;但是为了同学们更好的理解就直接称为单链表的头结点。 带头链表里的头结点&#xff0c;实际为 "哨兵…

第TR1---TR3周: Pytorch复现Transformer

TR1 一、文本输入处理 1. 词向量 和常见的NLP 任务一样&#xff0c;首先会使用词嵌入算法&#xff08;embedding algorithm&#xff09;&#xff0c;将输入文本序列的每个词转换为一个词向量。 如下图所示&#xff0c;假设我们的输入文本是序列包含了3个词&#xff0c;那么每…

2025深圳国际人工智能展览会

2025深圳国际人工智能展览会 Shenzhen International Artificial Intelligence Exhibition 2025 时间&#xff1a;2025年6月25-27日 地点&#xff1a;深圳国际会展中心&#xff08;宝安新馆&#xff09; 详询主办方陆先生 I38&#xff08;前三位&#xff09; I82I&#…

Linux系统部署MongoDB开源文档型数据库并实现无公网IP远程访问

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 &#x1f4a1; 推荐 前些天发现了一个巨牛的人工智能学习网站&am…

chrome 谷歌浏览器插件打包

1、找到id对应的字符串去搜索 C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data\Default\Extensions2、选择根目录 直接加载下面的路径扩展可用&#xff1a;

【探索Linux】P.37(传输层 —— TCP协议通信机制 | 确认应答(ACK)机制 | 超时重传机制)

阅读导航 引言一、确认应答(ACK)机制1. 成功接收2. 过程中存在丢包3. 引入序列号&#xff08;1&#xff09;序列号的定义&#xff08;2&#xff09;序列号的作用&#xff08;3&#xff09;序列号的工作原理&#xff08;4&#xff09;序列号和确认应答号 二、超时重传机制1. 超时…

【操作与配置】Linux的CPU深度学习环境

Conda安装 可浏览官网&#xff1a;Miniconda — Anaconda 文档 这四条命令会快速而且悄悄地安装最新的64位安装程序&#xff0c;然后清理安装过程中产生的文件。如果需要安装 Linux 版本的其他版本或架构的 Miniconda&#xff0c;只需要在命令中更改安装程序的名称。 mkdir …

隐私计算实训营第二期第十课:基于SPU机器学习建模实践

隐私计算实训营第二期-第十课 第十课&#xff1a;基于SPU机器学习建模实践1 隐私保护机器学习背景1.1 机器学习中隐私保护的需求1.2 PPML提供的技术解决方案 2 SPU架构2.1 SPU前端2.2 SPU编译器2.3 SPU运行时2.4 SPU目标 3 密态训练与推理3.1 四个基本问题3.2 解决数据来源问题…

二叉搜索树(BST)

目录 一、概念 二、代码实现 1.框架 2.查找 3.插入 4.删除 5.递归的写法 三、应用 一、概念 二、代码实现 1.框架 #pragma oncenamespace utoKey {//结点template<class K>struct BinarySearchTreeNode{//结点的typedeftypedef BinarySearchTreeNode Node;//Nod…