APP下载

基于Python 开发网络运行日志收集整理系统设计与实现

2020-12-28王秀木殷轶娜刘静闻黄淼婉

防灾减灾学报 2020年4期
关键词:收集整理台站日志

王秀木,殷轶娜,刘静闻,黄淼婉,查 楠

(辽宁省地震局,辽宁 沈阳 110034)

0 引言

随着信息化进程逐步推进,很多费时、繁琐的工作,都可以用软件来代替人工操作。辽宁省地震局监测中心因对市局、台站的网络运行有评比要求,需要每天查看市局、台站的网络运行值班日志,检查日志主要是通过FTP 的传输。下载并查看上交情况,检查日志内容。对没有上交或存在问题的市局、台站进行反馈。目前,每天需要检查的台站15 个,市局12 个。信息网络值班人员完成这项工作需要大量的时间和精力,非常繁琐。为了解决实际问题、提高工作效率,需要建立一套合理、科学、实用的开发软件。可以实现FTP 同步下载、实时检索并形成汇总日志、语音提醒、自动存储等功能,从而实现操作流程自动化,提高值班人员的工作效率。

1 编程工具Python 介绍

Python,是一种直译试、面向对象的计算机程序设计语言,稳定且成熟,现在它已成为一种功能强大的通用型语言,能够轻松完成很多常见的任务,它包含了一组完善而且容易理解的标准库,它采用缩进来定义语句块,这与其它大多数计算机程序设计语言不一样,这使得它的语法非常简洁和清晰。

Python 语言的特点:

(1) 免费、开源

Python 是 FLOSS(自由/开放源码软件) 之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中[1]。FLOSS 是基于一个团体分享知识的概念。

(2) 可移植性

大多数Python 程序可以不经过修改就在所有主流计算机平台上运行,并且Python 提供了各种可选的独立程序,例如用户图形界面、数据库访问、基于Web 系统和提供了操作系统接口等。

(3) 面向对象

Python 既支持面向过程的编程同时还支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由结合了数据和功能的对象构建的。

(4) 可扩展性

如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C 或C++编写,然后在Python 程序中使用它们[2]。

(5) 丰富的库

Python 含有许多预编译且可移植的功能模块,囊括了从字符模式到网络编程等一系列应用级编程任务;除此之外,Python 还可以通过自行开发的库和大量的第三方库进行简化编程,包括Web 开发、数值计算、游戏开发和其他应用场景。

除了以上提到的各种优点,Python 也是有缺点的。比如运行速度慢、代码加密困难等。

2 系统功能设计

2.1 软件流程设计

本系统是集文件采集及管理为一体的应用平台。能够将大量的文件自动下载、收集整理,如有未下载的文件立即自动提醒值班人员,从而实现操作流程自动化,提高工作效率(图1)。

图1 网络运行日志收集整理系统工作流程图Fig.1 Flowchart of Network Running Log Collection and Finishing System

将网络值班人员日常下载台站网络运行值班日志的任务实现流程自动化,实现管理系统的各项功能,主要包括:①台站工作人员将日志上传至FTP 后,通过本系统可以对已上传的日志进行自动下载;②对不符合文件格式等原因的日志进行重新下载;③成功下载的文件收集到指定文件夹中,并提示下载完成。

2.2 开发环境

系统环境:Windows 7

开发工具:Python 3.6

编辑器:PyCharm

测试浏览器:Firefox ,Chrome

2.3 系统主要功能设计

本系统基于Python 语言开发,均有前台展示端和后台自动管理端两个部分,系统框架如图2 所示。

图2 系统框架图Fig.2 Framework map of earthquake system

首先,需要搭建server 服务端,Web 服务的主要作用是,接收客户端的请求。而Flask 框架较适合搭建Python 后台server,Flask 框架是当下流行的两大Web 框架之一,它是用Python实现的。Flask 显著的特点是核心的简单,但同时又易于扩展。默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。

代码如下:

from flask import Flask

app = Flask(__name__)

if __name__ == " __main__" :

通过调用run() 的方法使服务器运行起来,如下:

app.run (host='0.0.0.0',port=8000)

通过 http://localhost:8000/static/index.html 或者http://localhost:8000 可以进入网页。

2.3.1 前台展示端

通过使用url_for 函数可以让前台的画面展示出来。在python+flask 的Web 开发中,url_for() 函数最简单的用法是以视图函数名作为参数,返回对应的 URL,还可以用作加载静态文件。通过http://localhost:8000/static/index.html 进入网页(图3)

图3 前台视图Fig.3 Front view

根据网络运行日志收集整理系统对前台展示端的需求,功能如下:

路径部分:可以选择一个或多个台站的路径进行下载。

执行时间:时间输入框,目的是做定时下载文档的功能,如果不输出时间信息的情况下,点击“开始执行”的按钮,就会立即执行下载工作,否则就按照指定时间执行下载工作,为了让值班员知道下载完成,会发出提示音,通知下载完成。

结果目录:结果框中拷贝下载文件的名称。

2.3.2 后台管理端

后台管理端主要实现网络运行日志收集整理系统的自动下载、收集日志等功能。该系统主要使用Python 的软件功能模块进行编译,如图4 所示。

图4 功能模块设计Fig.4 Function module design

(1) FTP 模块:省局监测中心因对市局、台站的网络运行有评比要求,需要每天查看市局、台站的网络值班日志,现阶段检查日志主要是通过FTP 的传输。FTP 的全称为File Transfer Protocol,是一种专门用来传输文件的协议。FTP的主要目的是允许用户连接到远程计算机查看远程计算机上有哪些文件,然后把文件从远程计算机上复制到本地计算机,或把本地计算机的文件传送到远程计算机去[3]。

想要连接到FTP,需要先下载pip 工具,然后通过pip install ftplib,下载FTP 的第三方包。Ftplib 模块连接和下载FTP 数据,Python 中默认安装的ftplib 模块定义了FTP 类,从选中的FTP网站中获取文件,可以使用ftplib 库。其中函数有限,可用来实现简单的FTP 客户端,用于上传或下载文件。在页面点击copy 按钮时,就可以成功连接到FTP,如图5 所示。

图5 FTP 连接页面Fig.5 FTP Link page

(2) 日志模块:当台站工作人员将日志通过FTP 上传后,后台开始自动进行下载,这时选择进行定时下载或者自动循环时间下载,所需要用到datetime 模块定义了以下几个类;datetime.date():表示日期的类;datetime.time():表示时间的类;datetime.timedelta():表示时间间隔等关于使用到关于时间的模块。下载时对于路径的选择需要用到os.path 模块,路径存在,下载日志;如果路径不存在,重新下载。Shutil 模块支持文件的复制与删除操作。pyinotify模块可以监控文件夹内的文件的创建,修改,读取,删除等一系列操作。

(3) 存储模块:将下载的日志放到指定文件夹。需要使用os 模块包含许多用于操作文件和目录的函数,这些文件可以形成目录。sys 模块可获得脚本的参数、处理模块、使用sys 模块操作模块搜索路径、查找内建模块、使查找已导入的模块等作用等。

功能模块的编译界面,如图6 所示。

图6 功能模块编译Fig.6 Function module compilation

3 系统功能实现

本系统部署环境为Windows Server 2007,利用Python3.6 为开发工具,采用Python 语言实现网络运行日志收集整理系统。通过前台可视化展示、查询以及后台自动下载等功能,值班人员可以选择每天定时下载或者循环下载保证值班人员可以无需操作就可以完成下载任务。为网络值班人员缩短了工作时间,提高了工作效率。

4 实际应用情况

经过应用测试,本系统较好的满足了值班人员的工作需要,系统运维稳定,主要功能均已实现。软件后台通过调用run() 的方法使服务器运行起来,可以实现每天自动下载软件。

本系统具有以下性能:

(1) 易用性

查询、添加、删除,修改操作,输入限制的正确性。

(2) 兼容性

软件支持Window 下的IE 浏览器、火狐浏览器等。

(3) 安全性

保存某个登陆页面,不能单独对其进行操作不进行登陆,不允许直接进入页面URl 打开页面并进行操作。

5 结束语

网络运行日志收集整理系统基于Python 语言搭建Flask 框架,通过URL_FOR 方法展示前台页面,利用开源的Interface 接口与FTP 连接,完成软件的编译。实现了网络值班日志的同步下载、批量检索、创建值班日志目录、短信提醒、自动存储等功能,满足了辽宁地震监测中心网络值班办公自动化的需求。本系统在研发过程中也遇到诸如:FTP 接口实现、中文路径无法识别等问题,但都通过项目组的不懈努力和不断尝试最终得以解决。随着信息网络技术的高速发展,本系统将会不断地升级完善,使得功能更加强大,最大限度的省去人工操作,从而推进地震监测中心值班工作自动化、规范化进程。

猜你喜欢

收集整理台站日志
中国科学院野外台站档案工作回顾
气象基层台站建设
一名老党员的工作日志
企业渠道选择研究的收集整理
扶贫日志
港口工程施工技术档案收集整理
游学日志
做好人事档案收集整理工作的重要性及建议
基层台站综合观测业务管理之我见
彝族毕摩文献收集整理研究存在的问题与对策