集美大学网络管理实验五_第1页
集美大学网络管理实验五_第2页
集美大学网络管理实验五_第3页
集美大学网络管理实验五_第4页
集美大学网络管理实验五_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验五 业务服务监控详解(一)一、实验目的本实验的主要目的是通过运用Python第三方系统基础模块,快速、有效地开发企业级服务监控平台,设计文件与目录差异对比方法、HTTP质量监控、邮件告警等内容。 二、实验内容1、文件内容差异对比方法。2、文件与目录差异对比方法。三、实验工具1、linux2、python及相关的第三方基础模块四、实验步骤模块介绍我们可以通过Python的标准库模块(Python2.3以上就已经自带)difflib模块来实现文件内容的文本差异对比。并且支持输出可读性比较强的HTML文档,与Linux下的diff命令相似。可以使用difflib对比代码,配置文件的差别,在版本控制方面非常有用。5.1 实现两个字符串的差异对比在下列示例程序中,定义了两个字符串,对比差异之后以版本控制风格进行输出。你的运行结果截屏放于此处。在上面的结果中,发现字符串下面有符号标记。其符号含义如下:符号含义 - 包含在第一个系列行中,但不包含第二个。 + 包含在第二个系列行中,但不包含第一个。 两个序列行一致 ? 标志两个序列行存在增量差异 标志着两个序列行存在的差异字符然后现在再来分析一下上面的结果。分析结果(此处写出你的分析结果):Text1 与text2文档存在增量差异以及字符差异Text1里包含而text2没有5.2将字符串对比结果生成美观的HTML格式文档difflib中的HtmlDiff()类支持将比较结果输出为HTML格式,其HtmlDiff()类中的make_file()方法可以生成美观的html文档。我们依旧采用上面的代码,做一些简单的修改:将新文件命名为Difflib.py,运行python Difflib.py Text.html,再使用浏览器打开Text.html文件。运行结果截屏。此处放置你的程序运行结果截屏。python Difflib.py Text.html使用浏览器打开Text.html文件,会发现一个新的问题出来了,我们使用网页打开我们输出的Text.html文件,显示效果如下,换了多个浏览器也是一致乱码。发现只要是显示中文,包括中文和中文输入法的字符都会出现乱码。查看Text.html文本 将utf-8编码改为同样支持中文编码的gbk后,重新使用浏览器打开Text.html文件发现中文显示正常。此HTML文档包括了行号、差异标志、图例等信息,可读性增强了很多。模块介绍Python2.3以上的版本默认自带了filecmp模块,无需额外安装。我们可以用这个模块来检查原式与目标文件的一致性,filecmp可以实现文件、目录、遍历子目录的差异对比功能。模块使用filecmp提供了三个操作方法。 cmp:单文件对比 cmpfiles:多文件对比 dircmp:目录对比5.3单文件对比使用的是filecmp.cmp(f1,f2,shallow)。其中f1、f2为文件,当两个文件相同时返回True,不同返回False,(shallow默认为True,其意思是只根据os.stat()方法返回的文件基本信息进行对比最后访问时间、修改时间、状态改变时间等,而不考虑文件内容)。当shallow为False时,则os.stat()与文件内容同时进行校验。(1)在/home路径下创建test文件夹,在test文件夹下创建filecmp文件夹,在filecmp/路径下在代码的当前路径/home/test/filecmp。在filecmp文件夹下创建两个名为File1.txt、File3.txt的文件,在File1中敲入你的姓名,性别。在File3中敲入你的学号。File1.txt和File3.txt创建结束。接着创建File2.txt,它是File1.txt的副本文件,即直接由复制文件File1.txt并改名File2.txt得到。所以按理来说File1.txt、File2.txt两个文件完全相同、而与File3.txt文件不同。下面使用代码进行验证:5.4多文件对比比较两个文件夹内指定文件是否相等。参数dir1,dir2指定要比较的文件夹,参数common指定要比较的文件名列表。函数返回包含3个list元素的元组,分别表示匹配、不匹配以及错误的文件列表。错误的文件指的是不存在的文件,或文件被锁定不可读,或没权限读文件,或者由于其他原因访问不了该文件。l 在刚才创建的filecmp/路径下,创建两个文件夹dir1和dir2。形成/home/test/filecmp/dir1和/home/test/filecmp/dir2。l 具体过程:首先创建dir1,dir1下创建以上五个文件。文件内容可以随意的填写。再创建第二个文件夹dir2。将文件夹dir1中的File1.txt和File2.txt(File2.txt,它是File1.txt的副本文件,即直接由复制文件File1.txt并改名File2.txt得到)拷贝到dir2下。再创建新的命名为File3.txt和File5.txt两个文件。File3.txt和File5.txt文件内容可随意添加。dir2形成filecmp下目录tree图:进入dir1目录下,输入命令:md5sum *得到下列文件是dir1文件夹下所有文件的MD5值(你所得的值与下列值格式类似但具体值不同,将你的所得截屏)FBAAF8CC3C1DF70B183CB8E8FBDFC57C *File1.txtFBAAF8CC3C1DF70B183CB8E8FBDFC57C *File2.txt16EC37C499F64FC60E95650B500E30A4 *File3.txt202CB962AC59075B964B07152D234B70 *File4.txt进入dir1目录下,输入命令:md5sum *下列文件是dir2文件夹下所有文件的MD5值(你所得的值与下列值格式类似但具体值不同,将你的所得截屏)FBAAF8CC3C1DF70B183CB8E8FBDFC57C *File1.txtFBAAF8CC3C1DF70B183CB8E8FBDFC57C *File2.txtD41D8CD98F00B204E9800998ECF8427E *File3.txtCB30FC9CEC9A2D04EF49B22E2066C264 *File5.txt# 根据MD5值可以知道,两个文件夹下的File1.txt、File2.txt相匹配,# 而File3.txt不匹配,# 另外对于File4.txt和File5.txt两个文件只在各自的目录下存在。使用示例代码验证:5.5目录对比目录对比,通过filecmp(a,b,ignore,hide)类创建一个目录比较对象用于比较文件夹,通过该类比较两个文件夹,可以获取一些详细的比较结果(如只在A文件夹存在的文件列表),并支持子文件夹的递归比较。dircmp提供了三个方法用于报告比较的结果: report():只比较指定文件夹中的内容(文件与文件夹) report_partial_closure():比较文件夹及第一级子文件夹的内容 report_full_closure():递归比较所有的文件夹的内容另外为了输出更加详细的信息,dircmp类还提供了以下属性: left_list:左边文件夹中的文件与文件夹列表; right_list:右边文件夹中的文件与文件夹列表; common:两边文件夹中都存在的文件或文件夹; left_only:只在左边文件夹中存在的文件或文件夹; right_only:只在右边文件夹中存在的文件或文件夹; common_dirs:两边文件夹都存在的子文件夹; common_files:两边文件夹都存在的子文件; common_funny:两边文件夹都存在的子文件夹; same_files:匹配的文件; diff_files:不匹配的文件; funny_files:两边文件夹中都存在,但无法比较的文件; subdirs:将common_dirs目录映射到新的dircmp对象,格式为字典的类型。示例代码,比较dir1和dir2文件夹目录的差异# -*- coding: utf-8 -*-import filecmpa = /home/test/filecmp/dir1 # 定义左目录b = /home/test/filecmp/dir2 # 定义右目录dirobj = filecmp.dircmp(a, b, EXT.txt) # 目录比较,忽略EXT.txt文件# 输出对比结果数据报表,详细说明请参考filecmp类方法及属性信息dirobj.report()dirobj.report_partial_closure()dirobj.report_full_closure()print(left_list: + str(dirobj.left_list)print(right_list: + str(dirobj.right_list)print(common: + str(mon)print(left_only: + str(dirobj.left_only)print(right_only: + str(dirobj.right_only)print(common_dirs: + str(mon_dirs)print(common_files: + str(mon_files)print(common_funny: + str(mon_funny)print(same_file: + str(dirobj.same_files)print(diff_files: + str(dirobj.diff_files)print(funny_files: + str(dirobj.funny_files)运行结果下:#python filecmpTest.pydiff /home/test/filecmp/dir1 /home/test/filecmp/dir2Only in /home/test/filecmp/dir1 : File4.txtOnly in /home/test/filecmp/dir2 : File5.txtIdentical files : File1.txt, File2.txtDiffering files : File3.txtdiff /home/test/filecmp/dir1 /home/test/filecmp/dir2Only in /home/test/filecmp/dir1 : File4.txtOnly in /home/test/filecmp/dir2 : File5.txtIdentical files : File1.txt, File2.txtDiffering files : File3.txtdiff /home/test/filecmp/dir1 /home/test/filecmp/dir2Only /home/test/filecmp/dir1 : File4.txtOnly /home/test/filecmp/dir2 : File5.txtIdentical files : File1.txt, File2.txtDiffering files : File3.txtleft_list:File1.txt, File2.txt, File3.txt, File4.txtright_list:File1.txt, File2.txt, File3.txt, File5.txtcommon:File1.txt, File2.txt, File3.txtleft_only:File4.txtright_only:File5.txtcommon_dirs:common_files:File1.txt, File2.txt, File

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论