王秀木,殷軼娜,劉靜聞,黃淼婉,查 楠
(遼寧省地震局,遼寧 沈陽 110034)
隨著信息化進程逐步推進,很多費時、繁瑣的工作,都可以用軟件來代替人工操作。遼寧省地震局監測中心因對市局、臺站的網絡運行有評比要求,需要每天查看市局、臺站的網絡運行值班日志,檢查日志主要是通過FTP 的傳輸。下載并查看上交情況,檢查日志內容。對沒有上交或存在問題的市局、臺站進行反饋。目前,每天需要檢查的臺站15 個,市局12 個。信息網絡值班人員完成這項工作需要大量的時間和精力,非常繁瑣。為了解決實際問題、提高工作效率,需要建立一套合理、科學、實用的開發軟件。可以實現FTP 同步下載、實時檢索并形成匯總日志、語音提醒、自動存儲等功能,從而實現操作流程自動化,提高值班人員的工作效率。
Python,是一種直譯試、面向對象的計算機程序設計語言,穩定且成熟,現在它已成為一種功能強大的通用型語言,能夠輕松完成很多常見的任務,它包含了一組完善而且容易理解的標準庫,它采用縮進來定義語句塊,這與其它大多數計算機程序設計語言不一樣,這使得它的語法非常簡潔和清晰。
Python 語言的特點:
(1) 免費、開源
Python 是 FLOSS(自由/開放源碼軟件) 之一。使用者可以自由地發布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用于新的自由軟件中[1]。FLOSS 是基于一個團體分享知識的概念。
(2) 可移植性
大多數Python 程序可以不經過修改就在所有主流計算機平臺上運行,并且Python 提供了各種可選的獨立程序,例如用戶圖形界面、數據庫訪問、基于Web 系統和提供了操作系統接口等。
(3) 面向對象
Python 既支持面向過程的編程同時還支持面向對象的編程。在“面向過程”的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在“面向對象”的語言中,程序是由結合了數據和功能的對象構建的。
(4) 可擴展性
如果需要一段關鍵代碼運行得更快或者希望某些算法不公開,可以部分程序用C 或C++編寫,然后在Python 程序中使用它們[2]。
(5) 豐富的庫
Python 含有許多預編譯且可移植的功能模塊,囊括了從字符模式到網絡編程等一系列應用級編程任務;除此之外,Python 還可以通過自行開發的庫和大量的第三方庫進行簡化編程,包括Web 開發、數值計算、游戲開發和其他應用場景。
除了以上提到的各種優點,Python 也是有缺點的。比如運行速度慢、代碼加密困難等。
本系統是集文件采集及管理為一體的應用平臺。能夠將大量的文件自動下載、收集整理,如有未下載的文件立即自動提醒值班人員,從而實現操作流程自動化,提高工作效率(圖1)。

圖1 網絡運行日志收集整理系統工作流程圖Fig.1 Flowchart of Network Running Log Collection and Finishing System
將網絡值班人員日常下載臺站網絡運行值班日志的任務實現流程自動化,實現管理系統的各項功能,主要包括:①臺站工作人員將日志上傳至FTP 后,通過本系統可以對已上傳的日志進行自動下載;②對不符合文件格式等原因的日志進行重新下載;③成功下載的文件收集到指定文件夾中,并提示下載完成。
系統環境:Windows 7
開發工具:Python 3.6
編輯器:PyCharm
測試瀏覽器:Firefox ,Chrome
本系統基于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
本系統部署環境為Windows Server 2007,利用Python3.6 為開發工具,采用Python 語言實現網絡運行日志收集整理系統。通過前臺可視化展示、查詢以及后臺自動下載等功能,值班人員可以選擇每天定時下載或者循環下載保證值班人員可以無需操作就可以完成下載任務。為網絡值班人員縮短了工作時間,提高了工作效率。
經過應用測試,本系統較好的滿足了值班人員的工作需要,系統運維穩定,主要功能均已實現。軟件后臺通過調用run() 的方法使服務器運行起來,可以實現每天自動下載軟件。
本系統具有以下性能:
(1) 易用性
查詢、添加、刪除,修改操作,輸入限制的正確性。
(2) 兼容性
軟件支持Window 下的IE 瀏覽器、火狐瀏覽器等。
(3) 安全性
保存某個登陸頁面,不能單獨對其進行操作不進行登陸,不允許直接進入頁面URl 打開頁面并進行操作。
網絡運行日志收集整理系統基于Python 語言搭建Flask 框架,通過URL_FOR 方法展示前臺頁面,利用開源的Interface 接口與FTP 連接,完成軟件的編譯。實現了網絡值班日志的同步下載、批量檢索、創建值班日志目錄、短信提醒、自動存儲等功能,滿足了遼寧地震監測中心網絡值班辦公自動化的需求。本系統在研發過程中也遇到諸如:FTP 接口實現、中文路徑無法識別等問題,但都通過項目組的不懈努力和不斷嘗試最終得以解決。隨著信息網絡技術的高速發展,本系統將會不斷地升級完善,使得功能更加強大,最大限度的省去人工操作,從而推進地震監測中心值班工作自動化、規范化進程。