999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux操作系統的批量管理工具

2017-05-03 11:05:23陳衍鵬
微型電腦應用 2017年1期
關鍵詞:功能信息管理

陳衍鵬

(廣東電網有限責任公司 佛山供電局, 佛山 528000)

基于Linux操作系統的批量管理工具

陳衍鵬

(廣東電網有限責任公司 佛山供電局, 佛山 528000)

Linux批量管理工具,主要采用Python和Paramiko接口模塊進行開發,針對部署了Linux操作系統的服務器進行腳本和命令的批量執行,包括服務器信息管理、上傳下載管理、腳本信息管理以及幫助文檔四大功能模塊。通過Linux批量管理工具的應用,使Linux操作系統的日常運行維護以及安全整改工作的效率得到巨大提升,減少重復工作的人力和時間投入。

Linux; Python; Paramiko; 批量管理

0 引言

目前,公司信息部門的日常工作中,運維工作需要登錄后臺操作系統進行巡檢,查看服務器狀態和相關參數;在法定長假前,需要進行服務器、數據庫等的大檢查;在年度安全整改中,需要對服務器上傳掃描腳本,并且回傳掃描結果,分析出結果后,由相關負責人進行漏洞整改,修改服務器相關文件和參數。這些工作只能人工登錄服務器進行操作才能完成,當前服務器數量龐大,并且操作系統超過70%都是Linux操作系統,因此,需要耗費巨大的成本去完成這些較為繁瑣的工作。

為了解決當前存在的問題,本人決定開發一套工具,可完成批量上傳、下載、查詢、執行等常用操作。使用該工具,不僅能極大地提高工作效率,降低人力和時間的損耗,同時還降低了人為的誤操作,極大提高生產環境的安全性。

1 淺談Python與Paramiko

python給我最初的印象便是簡潔。所有的變量都不需要定義,這給了編程者很大的自由空間。如a=3,即可同時完成變量的定義和賦值。對于簡化程序的代碼,起到了很大的作用。庫很多,博大精深,這樣形容python最恰當不過了。正因為其強大的庫,讓編程不再艱難。只需要調用庫中的函數,而對于函數的具體實現,沒有特殊需求,無需探究。這無疑是編碼者的福音。其次,與C/C++相比,所有語句末尾無需再添加繁瑣的“;”(分號),因為每一行就是一個語句,并且使用簡單而美觀的縮進,規范了變量和語句的執行域,而摒棄了一貫使用的“{}”(花括號)作為界限,不僅使語句更加富有可讀性,而且還為代碼的編寫者提供了良好的代碼習慣[1]。

Paramiko模塊是用python語言寫的一個模塊,遵循SSH2協議,支持以加密和認證的方式,進行遠程服務器的連接。Paramiko具有可讀性高、入門簡單、函數簡潔、無需重新安裝ssh等優點,Paramiko在與服務器建立連接后,生成ssh對象,包括使用交互式創建invoke_shell對象等。在完成操作后,ssh對象將返回out和err兩個流對象,out是常規的輸出信息,err是錯誤的輸出信息,使用這兩個對象,完成一系列的服務器操作。綜合該模塊的各種優點,本人選擇了它作為核心模塊來進行開發[2]。

2 需求分析

作為面向服務器日常運維的工具,需要進行一系列的需求分析,以滿足常用功能的開發完整性。

2.1 服務器管理

由于服務器的數量龐大,使用工具的時候,首先解決的是批量登錄。由于使用的模塊是Paramiko進行開發,所以需要有完整的服務器IP地址、用戶名、密碼,因此工具需要提供的首要功能是服務器列表的導入和信息更改。由于服務器的用戶名、密碼都屬于高密信息,因此需要進行加密。

2.2 文件管理

日常的運維工作中,不免經常需要上傳文件、腳本等到服務器中,有時也需要從服務器中下載相關的文件到本機,所以本工具還需要實現文件上傳和下載的功能。該功能的實現只需要調用Paramiko的sftp函數,因此服務器無需另外打開ftp服務,因此上傳和下載的過程都處于主動推送和獲取方式,減少了服務器重新配置的工作。由于上傳和下載文件面向的是大量的服務器,需要解決的一個問題是文件過大時等待時間的問題,所以我們需要開啟多線程對所有服務器的上傳、下載操作進行單獨處理[3]。

2.3 運行管理

工具的最重要的功能是批量執行腳本,因此需要對執行的全過程進行詳細的規劃。在執行腳本前,需要把腳本的列表展現在使用者面前,然后選中腳本進行下部分的操作。第一:查看腳本,腳本設置在scrip文件夾中存放,腳本的信息需要統一使用utf-8進行編碼,主要是因為Linux默認的編碼方式是美式utf-8方式,在查看腳本的功能中,可以看到腳本的詳細內容,但不能修改;第二:修改腳本,修改腳本首先需要讀取選中的腳本,然后對腳本進行展現,過程與查看腳本一致,但擁有修改權限,修改完成后可以進行保存,保存時需要保證編碼方式是utf-8;第三:運行腳本,運行腳本分為兩種方式,分別是已存在的腳本文件進行運行,另外是不執行腳本文件,而是在工具中輸入命令來執行,前者使用sftp進行腳本文件的上傳然后執行,后者則只需要對服務器傳輸腳本命令,然后返回執行結果即可[4]。

2.4 幫助

工具需要編寫幫助文檔,在點擊幫助按鈕后,可以顯示幫助文檔,幫助使用者使用該工具完成運維工作。

3 軟件架構

完成上述的需求分析后,接下來就是進行軟件架構的規劃。工具按照需求所列出的功能,分為“服務器管理”、“上傳下傳管理”、“腳本管理”、“幫助文檔”四大功能模塊。功能模塊需要建立在存儲文件系統上,加密文件系統需要經過Python的接口模塊進行序列化加密處理。在底層,需要使用XLRD、PICKLE、SFTP、PARAMIKO、CODECS作為整個工具的基礎模塊。在全局使用Python語言進行編寫,軟件架構圖,如圖1所示。

圖1 批量管理工具軟件架構圖

3.1 功能模塊

從上述功能模塊可以看到,整個工具分為服務器管理、上傳下傳管理、腳本管理、幫助文檔4個功能模塊。

服務器管理主要完成服務器基本信息的記錄、導入、展現、修改等功能。服務器基本信息包括:IP地址、登錄的用戶名、用戶密碼、root密碼和服務器功能說明,由于這些信息都是高密資源,在存儲過程中,需要使用加密的序列化文件進行保存。由于服務器數量龐大,在使用工具時,往往需要進行批量導入處理,所以需要使用excel表格對服務器的所有信息先進行記錄,然后處理完后,再導入工具中,工具使用XLRD模塊完成該功能。在展現服務器的方式主要是使用樹形列表來完成,樹形列表展現的內容有IP地址和服務器功能說明,用戶名和密碼均使用后臺記錄的方式來透明處理,無需展現。樹形列表支持使用復選框進行選擇,如需要進行批量管理,則只需要在對應的服務器前打勾即可。修改服務器信息則使用表格方式實現,首先讀取后臺記錄的服務器信息,然后在工具中使用表格方式展示,并且在對應的表格中進行修改。

上傳下載管理主要是完成本地文件往服務器方進行推送文件和本地向服務器方索取文件。上傳和下載均使用SFTP方式完成,在使用paramiko建立了ssh連接后,調用sftp函數獲取相應的對象,傳遞需要上傳的文件路徑或者需要下載的文件路徑名,然后調用put或get函數即可以完成上傳和下載的操作。當然,為了讓工具更加富有人性化,下載的功能支持通配符的匹配,即可以輸入“*.sql”就可以自動獲取服務器中所有的以“.sql”結尾的文件,無需記住整個文件名。

腳本管理包括查看腳本、添加腳本、修改腳本、運行腳本四個功能。腳本的展現是使用列表方式完成,展示的內容主要是腳本名。查看腳本是查看選中的腳本內容,選中的腳本只記錄腳本文件的存放路徑,而查看腳本是先從存放路徑中獲取腳本對象,然后使用文件流進行讀取,然后展現在用戶面前。添加腳本則相反,在完成腳本內容的錄入后,保存在規定的路徑下,用戶只需要提供必要的腳本名,然后使用文件流進行文件寫入,完成腳本的添加[5]。修改腳本與查看腳本的方式一致,但是獲取了修改的權限,在展現的內容中加以修改,然后使用文件流方式寫入原文件中。運行腳本主要是針對選中的服務器進行腳本上傳和執行,當然用戶可以直接輸入單行的命令,然后執行,完成批量管理的功能。

幫助文檔,顧名思義就是幫助用戶使用工具的文檔,用戶如果需要查看幫助文檔,可以點擊幫助文檔查看使用手冊。

3.2 存儲系統

工具使用加密序列化文件系統進行存儲。由于整個工具是建立在正確的服務器信息之上,信息不能泄露,并且不能通過外力人為獲取,所以使用本工具并不使用數據庫的方式來存儲服務器的信息,而是使用序列化文件進行存儲。通過序列化,使用獨立的數據結構和獨立的序列化、反序列化方式進行文件信息的讀取,最終完成所有的基礎信息獲取。由于序列化文件初始化是空文件,無法讀取任何服務器的基礎信息,所以工具在使用初期需要使用添加IP地址的功能,完成服務器信息的錄入和序列初始化操作[6]。

3.3 接口模塊

XLRD模塊是純Python編寫的Excel表格處理接口模塊,該模塊主要完成Excel的讀取操作,對應實現的功能是IP地址的批量導入工作。

PICKLE模塊是Python官方的序列化模塊,其高級版本是CPICKLE,操作方式一樣,但由于是使用C語言編寫的,所以運行效率要更高。該模塊主要完成服務器基礎信息的序列化與反序列化處理[7]。

SFTP模塊是屬于本地上傳下載處理的接口模塊,該模塊主要完成文件上傳下載的操作。

PARAMIKO模塊是使用Python編寫的接口模塊,遵循SSH2協議,支持以加密和認證的方式,進行遠程服務器的連接[8]。該模塊主要完成建立服務器的連接、創建交互式對象、執行腳本、執行命令行、獲取返回信息等。對應實現的功能是運行腳本。

CODECS模塊是Python的內核編碼模塊,該模塊支持目前國際通用的編碼方式。由于Linux默認的編碼是utf-8,因此文件的讀取、修改均使用utf-8編碼完成。對應的實現功能是查看、添加、修改腳本文件。

4 功能實現

工具以批量管理的功能作為核心進行開發,批量管理需要使用定義的腳本,同時以服務器信息為基礎,因此整個開發過程非常清晰。首先對工具劃分為兩大區域,第一是功能操作區,用于對服務器信息和腳本信息進行操作,通過Paramiko和sftp接口進行命令和腳本的傳遞和執行;第二是數據展示區,用于展示服務器執行命令后回傳的輸出數據,包括正確執行和錯誤執行的信息。工具分解圖,如圖2所示。

圖2 批量管理工具分解圖

功能操作區首先使用Pickle、Xlrd模塊接口作為服務器信息導入、修改、讀取的開發元素,完成服務器信息加密序列化和批量導入的功能,搭建出所有功能的基礎信息。然后使用Codecs模塊接口作為腳本信息的讀取、修改、添加的開發元素,由于腳本文件屬于對外開放的元素,所以沒有使用序列化手段進行加密,但是需要使用接口中的Utf-8編碼方式對腳本進行重新編輯,以防Linux無法讀取腳本字符而產生無法找到執行命令的錯誤[9]。完成兩個功能的開發后,工具使用Paramiko與sftp模塊接口開發出基于服務器信息和腳本信息的腳本執行功能,腳本執行功能主要是整合需要批量操作的服務器信息和需要進行批量執行的腳本,然后打包發送給服務器,通過多線程ssh的方式完成批量操作,最終由服務器完成執行后返回操作結果[10]。

數據展示區是對返回的操作結果的展示,通過讀取流對象,再進行重編譯,形成字符串顯示在工具的前端,提供給用戶查看服務器執行的結果。在數據展示區需要注意的一點是服務器返回的格式數據,由于工具無法對格式數據進行處理,因此工具需要進行返回的信息流進行格式數據的匹配和刪除,在此我們使用“正則表達式”對返回流進行統一的過濾,最終把完整的純字符結果展示在工具前端。

5 總結

通過開發Linux批量管理工具,有效提高了日常服務器運維效率,需要完成的工作只是收集服務器的IP地址、用戶名、密碼等相關參數,然后導入工具中,而無需再重復登錄服務器和并執行命令。該工具已經投入使用,并且已經審辦了軟件著作權,穩定運行,日常巡檢需要用幾個小時的時間,工具投入后僅需要10分鐘即可完成查看。工具提供日志記錄功能,在查看log文件夾可看到所有的日志文件,效率得到了明顯的提升。隨著國家“十三五”時期的到來,IT行業的投入將逐步提升,服務器數量也將增加,批量自動化處理的方式必將成為以后的方向。

[1] [美]Christian, Benvenut 著,夏宏,閆江毓,黃景昌譯. 深入理解Linux網絡技術內幕 [M].中國電力出版社,2009:.

[2] [美] Paul,Barry 著,林琪,郭靜譯. Head First Python[M].中國電力出版社,2012:.

[3] [美] Ryan,Mitchell 著,陶俊杰,陳小莉譯. Python 網絡數據采集[M].人民郵電出版社,2016:.

[4] 安曉輝 著. QT Quick核心編程[M].電子工業出版社,2015:.

[5] [美] Richard Blum,Christin Bresnahan. Linux命令行與shell腳本編程大全(第2版),武海峰,譯.[M].人民郵電出版社,2012:.

[6] 馬玉軍,陳連山. Red Hat Enterprise Linux 6.5系統管理[M].清華大學出版社,2014:.

[7] [日] 伊藤直也,勝見祐己,田中慎司. 24小時365天不間斷服務:服務器/基礎設施核心技術,張毅,譯.[M].人民郵電出版社,2015:.

[8] [韓]金泰龍.Linuxshell腳本編程入門,金香,譯.[M].人民郵電出版社,2014:.

[9] [印] Shantanu Tushar, Sarath Lakshman.Linux Shell腳本攻略(第2版),門佳,譯.[M].人民郵電出版社,2014:.

[10] 曹江華. Red Hat Enterprise Linux 7.0系統管理[M].電子工業出版社,2016(1):.

Batch Management Tool Based on Linux Operating System

Chen Yanpeng

(Foshan Power Supply Bureau,Guangdong Power Grid Limited Corporation,Foshan 528000,China)

Linux auto management tool, mainly uses Python and Paramiko interface to be developed. According to execute the scripts and command for the Linux operating system, this tool includes server’s information management, upload or download management, script information management and help documentation. Through the application of Linux auto management tool, the daily operation and maintenance of the Linux operating system and the safety rectification work have been greatly promoted, and the investment of human and time for the repetitive work are reduced.

Linux; Python; Paramiko; Auto management

陳衍鵬(1990-),男,本科學士,工程師,研究方向:信息系統開發和管理,數據庫,佛山 528000

1007-757X(2017)01-0077-04

TP311

A

2016.07.15)

猜你喜歡
功能信息管理
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
棗前期管理再好,后期管不好,前功盡棄
今日農業(2022年15期)2022-09-20 06:56:20
關于非首都功能疏解的幾點思考
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
“這下管理創新了!等7則
雜文月刊(2016年1期)2016-02-11 10:35:51
人本管理在我國國企中的應用
現代企業(2015年8期)2015-02-28 18:54:47
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
中西醫結合治療甲狀腺功能亢進癥31例
辨證施護在輕度認知功能損害中的應用
管理的另一半
主站蜘蛛池模板: 91精品国产情侣高潮露脸| 国产手机在线ΑⅤ片无码观看| 一级成人a毛片免费播放| 亚洲色欲色欲www在线观看| 日韩在线视频网站| 日韩天堂在线观看| 18禁不卡免费网站| 国产老女人精品免费视频| 成AV人片一区二区三区久久| 色色中文字幕| 欧美中日韩在线| 日韩精品一区二区三区视频免费看| 久久精品这里只有精99品| 婷婷在线网站| 91在线丝袜| 欧美.成人.综合在线| 99er精品视频| 四虎成人精品| 亚洲男人在线| 午夜福利亚洲精品| av一区二区三区高清久久| 啦啦啦网站在线观看a毛片| 中文字幕欧美日韩| 一区二区三区国产精品视频| 久久青草精品一区二区三区| 国产黑丝一区| 久久国产精品夜色| 中文字幕有乳无码| 国产黄网永久免费| 午夜国产理论| 精品日韩亚洲欧美高清a| 香蕉久人久人青草青草| 婷婷午夜影院| 91无码网站| h视频在线播放| 久久午夜夜伦鲁鲁片无码免费| 精品久久国产综合精麻豆| 伊人久久综在合线亚洲2019| 亚洲码一区二区三区| 欧美国产在线一区| 日本人又色又爽的视频| 久久精品丝袜| 亚洲av日韩av制服丝袜| 1024你懂的国产精品| 国产情精品嫩草影院88av| 国产乱视频网站| 日韩小视频在线观看| 亚洲精品卡2卡3卡4卡5卡区| 视频二区国产精品职场同事| 国产精品无码久久久久久| 精品人妻一区无码视频| 成人字幕网视频在线观看| 青草娱乐极品免费视频| 国产性猛交XXXX免费看| 午夜精品影院| 亚洲 欧美 中文 AⅤ在线视频| 1769国产精品免费视频| 激情爆乳一区二区| 日韩天堂在线观看| 青青青伊人色综合久久| 日韩最新中文字幕| 欧美不卡二区| 亚洲成a∧人片在线观看无码| 在线国产综合一区二区三区| 亚洲美女一级毛片| 国产成人精品综合| 国产手机在线小视频免费观看 | 精品伊人久久大香线蕉网站| 黄色网站在线观看无码| 国产成人综合在线观看| 国产精品密蕾丝视频| 国产一级α片| 久草青青在线视频| аⅴ资源中文在线天堂| 国产香蕉在线视频| 国产欧美在线| 色九九视频| 亚洲欧美人成人让影院| 精品国产自在在线在线观看| 亚洲国产清纯| 99国产精品免费观看视频| 亚洲无码免费黄色网址|