基于Django的设备运维系统设计与实现网络工程专业.docx
摘要1Abstract2前言3第1章绪论41.1 选题原因及意义41.2 现状分析41.3 设计的主要内容41.4 本文的组织结构5第2章关键技术概述62.1 Web开发技术62.1.1 基于Python的Django框架62.1.2 BoOtStraP框架72.2 后台交互技术82.2.1 PythOn的语言特点82.2.2 MySQL数据库简介92.3 本章小结9第3章设备运维系统需求分析与系统设计103.1 系统功能模块需求分析103.2 系统的整体设计113.2.1 系统的网络架构113.2.2 系统的总体结构123.3 系统数据建模133.4 系统性能需求分析143.5 本章小结14第4章设备运维系统的实现154.1 搭建基础框架154.2 创建数据库154.3 主要功能模块的实现184.3.1 用户登录验证184.3.2 资产管理模块实现204.3.3 主机管理模块实现244.3.4 监控系统模块实现264.3.5 权限管理模块实现284.4 本章小结30第5章总结与展望315.1 总结315.2 展望31参考文献33致谢错误味定义书签。当今我国科技发展迅速,企业逐步推进IT技术的部署,增强信息化建设,日常事务处理更加依赖于计算机操作,对系统功能要求更加复杂,需要相关的运行维护人员对网络设备进行维护。传统的人工维护的管理方式单一且耗时费力,采用设备运维系统则可以大大提高设备运维的高效便捷,从而降低人力成本。本文主要介绍设计基于Django框架的设备运维系统,以web界面进行批量管理运维,具有资产管理、主机管理、监控系统、用户权限管理等功能模块,实现自动高效化的运维管理方式。关键词:Django;Python;系统运维;网络管理AbstractNowadays,withtherapiddevelopmentofscienceandtechnologyinourcountry,enterprisesaregraduallyadvancingthedeploymentofITtechnology,strengtheninginformationconstruction,anddailyoperationsaremoredependentoncomputeroperations.Thefunctionalrequirementsofsystemaremorecomplex.Relatedoperationsandmaintenancepersonnelarerequiredtomaintainthenetworkequipment.Thetraditionalmanualmaintenancemanagementmethodissingle,time-consumingandlabor-consuming.Adoptingtheequipmentoperationandmaintenancesystemcangreatlyimprovetheefficiencyandconvenienceoftheequipmentoperationandmaintenance,therebyreducinglaborcosts.ThisarticlemainlyintroducestheequipmentoperationandmaintenancesystembasedontheDjangoframework.Itusesawebinterfaceforbatchmanagementandoperationandmaintenance.Ithasfunctionmodulessuchasassetmanagement,hostmanagement,monitoringsystem,anduserrightsmanagementtorealizeanautomaticandefficientoperationandmaintenancemanagementmethod.Keywords:Django;Python;Operation&Maintenance;NetworkManagement;前三随着计算机技术的快速发展,信息化建设的步伐越来越快,为了将人们从繁杂的事务中解脱出来,使事务的处理趋于条理化、高效化,各种类型的管理系统被设计开发出来并且投入使用,这给我们的日常生活带来了极大的便捷,但是为了系统的运行稳定,我们需要运维人员对这些网络设备及服务器进行维护。传统的人工维护都是在设备出现故障问题被反馈之后才进行维护处理,运维人员在系统搭建成功完毕后不会主动去频繁查看系统中各个设备的运行状态。这种情况使得运维人员的工作变得被动且单一。同时,企业的系统基础架构的规模在不断扩大,部署的IT网络设备不断增加,为了确保系统的稳定运行,运维人员需要监控系统中各个设备,这给运维人员带来的繁重的工作量。本文主要研究实现自动化的设备运维系统,可以实现自动添加设备,收集设备配置信息入库,批量管理设备,以及对设备运行健康状态的实时监控,通过Web管理的方式,使得运维人员可以批量管理设备,主动实时的维护设备,并且通过登录用户权限的管理,使得运维人员各司其职,工作互不干扰,从而大大提高工作效率,降低人为操作的失误风险,降低了运维的成本。第1章绪论本章内容介绍了开展这个课题设计的原因并且实现该课题设计的意义,分析了该设计方向的现状,以及概述了这个课题设计的内容。最后,介绍了本篇论文的组织结构。1.1 选题原因及意义选择本篇课题进行设计与实现的原因在于,现如今,应用系统的规模不断扩大,复杂程度逐步加深,IT运维需要尽快以自动化的运维方式取代传统的人工运维方式,设备运维自动化是未来运维管理的必然发展趋势,运维方式自动化可以极大提升对系统维护的可控制性,可以让运维人员清晰的查看到设备的运行状态,为系统的稳定运行提供了保障,实现自动化的设备运维模式,可以极大的降低人为操作失误的风险,并且可以大量减少运维人员重复工作,极大的降低人工成本,保障日常事务处理正常运作,有助于提高工作效率。1. 2现状分析现阶段,我国作为全球发展速度最快的国家,现代化建设迅猛推进,无论是政府组织还是企业、事业单位都在积极推进信息化建设,日常工作中处理事务越来越依赖于IT设备,因而运维人员需要确保系统的稳定,系统中各个设备的状态正常则是系统运行稳定的关键。传统的运维机制模式较为被动,在日常的运行维护过程中,当设备出现问题后,运维人员才会对相关的问题进行处理,使得相关负责的运维人员的工作繁重,同样使得工作效率低下。同时,传统的运维管理模式缺少对运维人员管理权限的定义以及负责相关设备责任的划分,导致在系统出现问题时难以快速准确的找到出现问题的设备,并且没法确保在出现问题时实时找到设备对应的负责运维人员。1.3 设计的主要内容本设计是基于Django框架的设备运维系统,以批量管理设备和充分利用资源为目标,以Web界面进行管理,采用用户登入接口,实现了资产管理、主机管理、监控系统、权限管理的功能模块,从而进行后台和网络设备的信息交互,为运维人员对系统设备进行管理提供极大便利。1.4 本文的组织结构本篇论文共分为五章内容,每章主要内容如下所述:第一章是绪论。绪论部分阐述了设计的原因及意义,对于设计研究方向的现状分析以及设计的内容和本文的组织结构。第二章是关键技术概述。关键技术概述部分列举了该设计开发过程中所使用到的关键技术,并对其进行简要描述,包括Web开发所使用的Django框架和前端开发的BootStraP框架,以及后台设备交互使用的脚本语言PythOn、MySQL数据库的简要介绍。第三章是系统需求分析部分。系统的需求分析主要进行系统功能需求分析,分为资产管理、主机管理、监控系统、权限管理四个主要功能模块,并且对各个功能模块进行了具体的需求分析,最后对系统进行性能需求分析。第四章是设备运维系统的设计和实现部分。这个部分描述了系统的整体架构,介绍了数据库和资产管理、主机管理、监控系统、权限管理四个主要功能模块的详细设计与实现。第五章是结束语部分。概括了本篇论文的主要内容,对本次设计所做的工作进行总结,反思了设计的不足之处及需要改进的部分,并对为未来发展方向展开设想。第2章关键技术概述本章主要阐述了系统所使用的关键技术,并对所采用技术的优势之处进行简要概述。2.1 Web开发技术网站架构采用的是基于Python的Web框架Django,前端实现采用的是来自Twitter的前端框架Bootstrap02.1.1 基于Python的Django框架DjangO框架是采用PythOn语言写成的Web应用框架,它采用MVC的结构,但是Django框架会自动处理由控制器Controller接受的用户输入的部分,网页服务器本身在派发工作的时候就隐含了控制的逻辑,网站框架中TenIPlatC模板文件的套用又是最常被使用的网页显示技巧,所以DjangO采用了MTV的框架模式,主要使用模型Modeh模板TemPlate和视图VieW三个部分搭配所形成的架构,这三个部分分别对应网站的数据储存model,py控制如何处理数据程序逻辑的view,py以及网站的模板文件组template,其中许多控制逻辑也被放在整个Django框架中。在基于DjangO框架的工程中,主要包括InOdelS.py,views,py,UrIS.py和html模板文件共四个python文件,一个标准App的模型类文件models,py主要用数据类来定义数据存储的结构,运用这个类,可以通过简单的Python的代码来对数据表中的记录进行增加、检索、更新、删除操作,不用关心实际上使用的SQL语句指令,并且提供访问数据库的APl接口。视图类文件VieW.py用来定义编写业务逻辑代码,主要是定义用来处理网页请求的函数,在函数中,把我们要操作的数据出送到网页服务器,这些在views,py中的函数被urls.Py进行对应和派发处理。访问逻辑控制文件urls.py,主要用来指出views.py中需要调用的视图。Django的程序执行流程如下:1.首先,使用PythOnmanage,pyrunserver命令启动服务器,将会载入同一目录下的settings.py文件。该文件的内容包含了项目中的配置信息,在文件中找到ROOTURLeONF的设置,决定将要使用哪一个模块,一般来说不需要修改这里的设置。2 .当访问URL的时候,Django会根据R00TJRLC0NF的设置加载URLconf03 .然后按照URLconf里的Urlpatterns的顺序,逐个匹配网址和正则表达式中的设置Patte门1。如果找到第一个匹配的设置后,则会调用VieWS.py里相关的视图函数,并把HttPReqUeSt的一个对象实例作为第一个参数4 .最后视图生成的数据调用urls.py中Urlpatterns中的HTML页面,返回一个HttpResponse对象实例。Django框架目的主要在于简便快速的开发数据库驱动的网站,注重组件的可重复性使用,为开发者搭建网站提供了极大便利,这是选用DjangO框架作为Web开发关键技术的缘由。2.1. 2Bootstrap框架BootStraP是目前很受欢迎的来自推特的前端框架,是开源的用于前端开发的工具包,其优点在于能兼容大部分JQuery插件。BOOtStraP基于HTML>CSS>JavaScript,它是简单直观的前端开发框架,让Web开发更简单迅速。Bootstrap由动态CSS语言Less写成,提供优雅的HTML和CSS规范,一经推出后便很受欢迎,一直是GitHUb上热门的开源项目。国内一些移动开发者开发的框架也是基于Bootstrap源码进行性能优化发展而来。Bootstrap基于HTML5和CSS3开发,提供一个带有网格系统、链接样式、背景的基本结构。BOOtStraP含有大量丰富的Web组件,这些组件简洁独特,合理利用这些组件可以简单快速的搭建出具有个人风格且功能齐全的网站,界面简洁又实用。由于BootStraP是开源的工具包,开发者可以根据自身的需要对源码进行二次开发,定制样式结构,来满足开发者自身的需求。采用BoOtStraP进行前端开发具有以下几点优势:1 .提供一套响应式的流式栅格系统,移动设备优先,随着屏幕或视口尺寸的增加,系统会自动分为至多12歹人它包含了易于使用的预定义类,还有强大的mixin用于生成更具语义的布局。2 .提供大量丰富可复用的组件,包含更多的功能,合理的使用这些组件,开发者可以快捷简便的搭建出自身需要的功能齐全的网站。3 .使得Web应用具有统一的风格效果,比如,可以使得网页中的链接和按钮等组件风格一致。总而言之,采用BootStraP框架可以让开发者快速简单的开发出功能齐全,界面简洁的网站。2.2. 台交互技术2.3. 2.1Python的语言特点采用脚本语言PythOn实现后台与设备进行信息交互。PythOn语法简洁明了,保证了程序的可读性,使用Python编写的程序短小精悍。Python作为模块化的语言,极易扩展,在各个平台下保持一致。PythOn语言具有一定动态性,面向对象特性,而且其内置的数据结构丰富而强大,简化了程序设计,缩短了代码长度,简明易懂,因为其出色的品质,受到使用者广泛推崇。总结起来,Python主要有以下特点:D可扩展性:PythOn在设计之初考虑到编程语言可扩展性的需求。作为一门解释型语言,文本文件相当于可执行的代码,创建一个Py文件并且写入代码,可以作为新的模块来使用。此外,Python支持C语言扩展,也可以嵌入到C和C+语言开发的项目中,使程序具有脚本语言灵活的特性。2)语法精简:语法涉及的关键字比较少,不需要使用分号,同时废弃了大括号、begin和end等标记,代码块使用空格或制表符来分割,支持使用循环和条件语句进行数据结构的初始化,这些设计使得PythOn程序短小而精悍,并且保证了很高的可读性。3)跨平台:Python通过Python解释器来解释运行,而无论是Windows还是LinUX系统下都有非常完善的Python解释器,并且可以保证Python程序在各个平台下的一致性,具有可移植性,也就是说,程序无论是在Windows系统下运行还是在Linux系统下运行,都具有同样的功能。4)动态性:Python语言具有一定的动态性,与JaVaSCript,Perl等语言相似,变量可以直接赋值,而不需要明确声明,就可以直接使用,动态创建的变量类型与第一次赋值时的值的类型相同。5)面向对象:Python语言具有很强的面向对象特性,相对于面向过程编程而言,极大地降低了实际问题建模的复杂度。一方面,面向对象使程序设计与现实生活逻辑更加接近,另一方面,面向对象程序设计可以抽象出类和对象的属性及行为,将它们组织在一定作用域中,具有封装、继承、多态的特性,简化了问题描述和程序设计。6)具有丰富的数据结构:Python内置丰富而功能强大的数据结构类型,包括列表、字典、元组、集合等类型,使用Python内置的数据结构可以使得程序设计简化,使得代码的长度缩短,方便开发者使用和维护。7)健壮性:PythOrI提供异常处理机制、堆栈跟踪机制和垃圾回收机制。异常处理机制可以捕获程序的异常并且报错,堆栈跟踪机制能够找出程序异常出错的位置,并且找出原因,垃圾回收机制可以及时释放不需要的内存空间,可以有效管理申请的内存区域。所以,运用PythOn进行Web开发时,因为其开源灵活的特性,可以非常高效的运行一个动态的,与信息交互数据库频繁的网站。2.2.2MySQL数据库简介MySQL数据库是一个开源、免费、可移植性强的小型关系型数据库管理系统,大多用于中小型应用系统的开发,有着较为丰富的网络支持,支持WindOWs、LinUX、MacOS>Solaris>OpenBSD,AIX等多种操作系统平台,是广泛使用关系数据库管理系统之一。它提供用于检查、优化数据库操作的管理工具和多种存储引擎。MySQL使用C和C+编写,使用了多种编译器进行测试,保证了源码的可移植性,它为多重编程语言提供API。MySQL支持多线程,这使得它可以充分利用CPlJ资源。在连接数据库方面,MySQL提供TCP/IP、ODBC和JDBC等多种途径,在Web应用方面,MySQL是最好的关系数据库管理系统应用软件。由于它性能优越,可以搭配Apache组成良好的开发环境。MySQL因为优化的查询算法,有效的提高了查询速度,同时由于开源免费的特性,在开发时被大量的采用。所以,本系统采用MySQL数据库来存储系统数据。2.3本章小结本章是关键技术概述部分,主要阐述了本设计的开发过程中所采用的关键技术。首先简要介绍了Django框架和Bootstrap框架的基本内容以及它们在Web开发中的优势,最后介绍了开发所使用的Python语言的特点,所选用的数据库支持技术MySQL的好处。第3章设备运维系统需求分析与系统设计3.1系统功能模块需求分析根据实际需求,对设备运维工作的流程进行分析,主要需要是让用户通过一台主机登录网页端从而可以远程批量管理和监控多台设备,因而将设备运维系统分为图3.1中的功能模块:图3.1运维管理系统功能模块1)资产管理模块该功能模块主要实现的是收集设备的配置信息入库,同时允许手动添加设备信息数据,实现设备信息的自动收集。2)主机管理模块该功能模块主要实现的功能是允许用户通过Web端对监管的多台设备进行批量式管理操作,实现批量执行命令,并且结果返回到前端页面。3)监控系统模块该模块功能主要是在远程客户端监控设备的监控状态,可以让用户在Web界面查看所监管各台设备连接状态,并且在设备出现状态异常时,后台将发送邮件通知设备负责人。4)用户管理模块该模块负责对用户的权限进行管理,实现添加和删除拥有不同权限的用户,并且可以根据需要更改用户的权限设置。通过设置用户权限,可以限定用户可以监控的设备。系统用户分为两种,一种是超级管理员用户,其拥有所以操作权限,另一种是只能对其所负责设备进行操作的普通用户。用户需要通过用户登录接口输入用户名和密码,经过后台数据库信息验证成功后才可登陆设备运维管理系统平台,进入系统的用户可以根据系统管理员所设置的权限获得相关的操作权限,进入系统的用户可以在页面对其监管的设备进行操作和状态监控,点击退出可以退出该系统平台,点击清除缓存按钮即可清除自用户登陆成功后操作设备加载的信息。3.2系统的整体设计3.2.1系统的网络架构本系统采用了Web的B/S即Browser/Server的结构,系统的整体设计则采用了MVC框构,即模型MOde1、视图View、控制器COntroIler三个部分。在系统实现的过程中,采用了基于Python语言的Django框架,后台与设备交互信息采用了关系型数据库MySQLoWeb的服务器根据HTTP协议将用户请求的页面返回给用户,用户在浏览器中输入URL后,浏览器会向服务器发送HttpRequest,服务器收到后,返回HttpResponse,并且同时将用户请求的页面发送给用户的浏览器。系统的网络架构如图3.2所示:设备组图3.2系统网络架构图3.2.2系统的总体结构系统的总体结构如图3.3所示分为用户层、业务逻辑层、数据访问层。用户界面资产管理主机管理业务逻辑层监控系统权限管理用户管理数据访问层MySQL数据库设备运维系统图3.3系统总体结构图用户通过浏览器浏览页面,选择资产管理、主机管理、监控系统、权限管理功能模块进行操作,Web服务器对数据库进行权限范围的访问,将后台交互的数据展示在前端页面上。3.3系统数据建模数据库建模是指根据用户的需求,在具体的数据库管理系统上,设计数据库结构以及建立数据库的过程。数据库建模的主要任务是构建实体一联系模型,即E-R模型。E-R模型描述的是现实生活中事物的属性和其之间相互的联系。实体是客观世界中用来描述客观事物的概念,实体的属性指实体具有的某种特性。现实世界中事物总存在着某种联系,实体之间的联系包括一对一、一对多,多对多、包含、属于等对应关系。对系统的需求进行分析,本系统主要实体的属性描述如下:用户:用户名,密码,角色权限;设备:设备名,IP地址,内存,CPU,操作系统,状态;服务:服务名称,服务ID,服务的内容信息;监控系统:监控设备ID,空闲内存,总内存,使用率,时间;3. 4系统性能需求分析本系统需要在实际运维管理工作中可行实用,所以需要完成相应的非功能性的性能分析,从实际操作需要考量,本系统应当具备安全性、可扩展和易于操作等特性。系统的安全性。本系统的访问需要通过用户登录接口密码验证,用户主要是内部的运维管理人员,并在被添加的时候即设置的角色权限,对于数据库的操作只能被限制在被设置的权限范围内,这样则保障了数据库信息的安全性系统的可扩展性和易用性。本系统是基于Djang。的设备运维系统,具有较高的可扩展性,可以快速添加在实际发展中需要的新功能。Web界面的设计直观,逻清晰,设备的状态通过绘图展示给用户,这有助于用户长时间操作4. 5本章小结本章内容对设备运维系统进行了需求分析,对运维工作进行分析后将系统分为资产管理、主机管理、监控系统和权限管理四个功能模块,以及对各个功能模块进行了需求分析。然后,对设备运维系统进行了整体设计,设计了系统的网络架构和系统的总体结构,概述了系统的工作流程和服务机制。最后,对系统数据库进行了数据建模和对系统进行性能需求分析。第4章设备运维系统的实现在进行系统开发实现之前,需要进行开发环境的搭建。Django需要在已安装PythOrl的环境下安装,在安装完成后,检验DjarIgO是否安装成功。然后配置MySQL数据库,完成数据库的安装。4.1 搭建基础框架在DjangO框架安装完成后,在命令行中运行:1) $django-adminstartprojectDjangoWeb则会自动生成manage,py文件和工程文件夹DjangoWeb,在这个文件目录下会自动产生init.pysetting.pyUrIS.py、wsgi.py四个文件。manage.py文件用来管理网站的配置,DjangO全部的命令都是执行这个程序,是一个用来接收命令行指令的工具程序,一般我们不会去修改它。setting,py文件是网站系统设计所在的位置,新创建的网站都需要先打开这个文件进行编辑设置。UrlS.py文件用来放置每个IJRL对应的函数,一般是在创建新的网页时需要编辑。wsgi.py文件是和虚拟主机中网页服务器连接的接口,等到网站上线才会用来设置。2) $cdDjangoWebSpythonmanage.PyStartappwebserver然后将创建的模块webserver力口到setting,py文件中的INSTALL_APPS列表中。网站的运行逻辑都在APP文件夹webserver中,这种方式使得网站每个主要功能都成为一个单独的模块。通过运行以上命令,即可完成网站的基本框架5. 2创建数据库Djang。中数据库不是直接定义数据库中的数据表,是以MOdeI的方式来操作,而是在model.Py文件中定义数据类来作为数据表,然后通过操作Model来对数据库进行操作。1)首先在model,py中定义需要的数据类,本系统主要定义以下几个类:# 用户类classwebserver(models.Model):user=models.OneToOneField(User,unique=True,verbose-name=(,ffl>ij,)phone=models.CharField(u'手机maxength=20)user_role=models.CharField(u'角色',maxenglh=40)# 权限类classcabinet(models.Model):name=models.CharField(u'名称',maxBngth=30)power=models.CharField(u'权限,maxength=20)classMeta:db_table="cabinet”# 主机信息类classhostinfo(models.Model):hostname=models.CharField(u'主机名',maxength=255)IP=models.CharField(u,IPJt',max_length=50)Mem=models.IntegerField(u'内存')CPU=models.CharField(u,cpu',maxJength=255)CPUS=models.IntegerField(u,cpus,)OS=models.CharField(u,os,maxJength=255)virtual1=models.CharField(u,virtual',max_length=255)status=models.CharField(u'状态',maxength=50)def_str_(self):returnseiLhostname# 服务信息类classproduct(models.Model):service_name=models.CharField(u'月艮务名称Imaxength=20)pid=models.IntegerField(u,pid,)module_letter=models.CharField(max-length=10)classMeta:db_table="product*'# 监控缓存信息类classmonitorMemory(models.Model):hostid=models.IntegerField(u'监控主机ID,)avai=models.CharField(空闲内存Imax_length=20)total=models.CharField(/总内存',maxength=20)ratio=models.CharField(u'使用率',maxenglh=20)time=models.DateTimeField(u'Bfi,auto_now_add=True)2)然后打开MySQL数据库服务器,创建数据库OBSerVer,在Setting.py文件中添加:DATABASES=,default,:,ENGINE':,django.db.backends.mysq,NAME,:OBServer1,'USER,:,root,PASSWORD*:*,HOST,:,127.0.0.,PORTt:3306,建立数据库连接,确保连接成功后,在命令行中运行以下命令:$PythOnmanage,pymakemigrationswebserverJpythonmanage,pymigrate然后就可以在程序中直接操作创建的数据库了。4. 3主要功能模块的实现视图文件view,py是Django重要程序逻辑所在的文件,是网站开发程序主要编写的地方。在视图文件中编写了显示数据的函数,在函数中先经由TenIPIate根据变量的内容和模板进行整合之后,再送到网页服务器中,再由urls.Py进行对应和委派。5. 3.1用户登录验证用户通过登录界面,输入用户名与密码,先把从窗体中取得的USemame和password通过Django内建的用户验证机制django.contrib.auth提供的authenticate进行验证,如果验证成功,此函数就会返回该用户的数据并放在变量USer中,反之返回None给变量user,因此如果USerisnotNone则登录成功,成功登录后使用user.is_active来检查账号是否有效,如果一切通过,将使用auth.login(req,user)将此用户的数据存入SeSSion中,以供接下来其他网页使用。登录成功后,用户将进入系统首页。点击注销功能,用户将回到登录界面。用户登录/注销函数具体代码如图4.1所示:dflogin(req):登录验证no>time=time.Stxftime(*%Y-三-dH*M%S*,timelocaltime0)ifxeq.method='GRT:uf=UseiFoxnOxtxnrender(req.login.htl,uf,:uf,'no"ti'notime)ls:uf=UseFozn(xe.POST)ifufis-,valid:username=xeq.POST.getCusxnaa/,'')passvoid=ieq.POST,getCpassvoxd",'')user=authauthenticate(username=usexuame.passvod=PaSSkOXd)ifuserisnotHonanduser.is_activeauth.login(req,USeI)xtuxnxeude(xeq.indx.Eta)lsxtxnreuder(xeq,ToCin.ht"l',uf,:uf,*novtia,novtime.,passvoxd_is_vxoncTxu)lsxtuxnrender(req,'loin.EtaV.u£uf,'nOWti':novtime)®login_xequixeddfindex(xeq):system=platform.syste11Oifsystem='Windo"$':version=platform.vexsiouOOsVeision=system+vexsioulsnode=platformnodeOOsVeision=node+®+systemxtuxnrender(eq.'index.EtaV,OsVxsion'OsVexsion)login-requieddflogout(rq):注销authlogout(eq)xtuxnHttpResponseRedixectC/nbsxvx/IOgin')图4.1用户登录/注销验证函数登录界面如图4.2所示:图4.2用户登录界面4.3.2资产管理模块实现用户通过点击资产管理的下级模块资产列表模块,进入资产列表页面可以查看到主机信息列表,列表会显示出已添加主机的主机名、IP、内存、CPU型号、CPU线程,虚拟机、状态等信息,可以点击这些字段对主机信息进行排序,以方便查看。在这个页面可以在窗体中输入主机名和IP进行信息查询,以及对主机进行编辑或删除的操作。服务器列表函数如图4.3所示:啷务器列对dfSezvexList(xequest,id=O):ifid!-O:hostinfoobjects.filter(id三id).delete0ifrequestmethod=*POST-getHostlnfo0print(requestPOST)PageSi"=request.POST,g*tCpagSis/)howuaau£»ctoryyittasprpagepage11umberequestPOST,getCPag"ubx')offset=request.POSTgetCoffst')#howbhvitemsintotalintheDBSeaXCh-request.POSTget('saxcV)Soirt_coluinn=requestPOSTgetCsort,)=BhiChcoluaaeedtosortorder=requestPOSTget('oxd,)WascendingoxdescendingHsearch:=判断是否有搜索空all-xcords=hostinfoobjects,filter(d=search,asst-type=sarch,business-unit=sarckidc=saxch)lsall_xecords=hostinfo.objects.allO三austbevntethelineCodehere二判断是否有排序需求ifsort-colunall_i«cords_count=all_x«cordscountOifnotoffsetoffseteOifnotpagSi三e:PageSiZe=1。=默认是每页二监的内容,与前端默认行数一致PageinatOr=Paginator(all-xcords,pageSi三e)U开始做分页page=ixt(int(offst)/int(pageSiz)+1)XeSPonSjdata='tota:all_records_count,'rows>foxsrv-liinpagemator.page(page):xspons-data,xovs,_.append(“id":server_li.idifservex-li.idls»“hMtna“sexvex_li.hostnameifsexver_li.hostnamels*IP/rsrvr-li.IPifserver_li.IPls”,*M三,rsxvr-lMemifsxvr-li.Memls”,“CPU"srvr-liCP11ifsvr-liCPUls”,"CPUS":srvr,li.CPUSifsrvr,liCPUSls*,vvixtuall*:server_li.vixtuallifservex-li.vixtuallls*statusv:seivex_li.statusifserver_li.statusls)xtuxnHttpResponse(jsondus(xesponse-data)xtuxnrender(request,sxvxlisthta)图4.3服务器列表函数BK英>CMDeM>InWIR)XeOCWgES-Axx*3Intd(R)Xcon(R)CFUE-26x*3Ota3c71141eI172.17.0JII,172,17XL11图4.4资产管理-资产列表界面添加服务器函数具体代码如图4.5所示:defServerAdd(request):result=,'check_ip_imo=O呦查主机是否存在,坏存在,】存在ifrequest,method=*POST*:form=autoArrMinionFor