曾愛斌
(中海油信息科技有限公司,廣東 深圳 518000 )
隨著信息化的深入發展,企業積累了大量的信息系統和設備,如何對這些系統進行運維,使其實現效益最大化的目標就成為相關工作的重點。目前,國內大多數企業主要通過運維人員面對面或者遠程訪問服務器開展針對信息系統的運維工作,然而該方法較為原始且易出現人為誤差。如果沒有網絡設備統一管理狀態,就需要網絡管理人員手動查看,不僅會增加工作量,而且還會引發過度浪費人力資源的問題[1]。綜上所述,該文以自動化運維技術的作用、分類以及應用為核心,通過技術、應用和編寫對Python自動化運維進行全面分析,從而實現有效提升工作效率、信息檢索效率和用戶網絡安全效率等目標。該文希望通過Python自動化運維技術為提升各方面的效率提供新的途徑和科學依據[2]。
Python是目前已經被全世界廣泛使用的一種解釋型、高級和通用的編程語言,它支持多種編程泛型,例如函數式、指令式以及反射式等。Python最早開始于20世紀80年代,是ABC語言的迭代產品,具有簡單易學、運行速度快以及跨平臺等特點。從21世紀開始,Python憑借自身的特色和優勢呈現逐年遞增的發展趨勢,已被廣泛用于許多行業和領域中。在第三方庫的支持下(尤其許多優秀的運維相關組件),Python可以在企業信息系自動化運維方面發揮重要作用。
Python作為新的編程語言,雖然已經被廣泛應用,但是該編程語言優、缺點并存,下面將具體介紹Python語言的優、缺點及發展現狀。
Python具有以下3個優點:1) 語法比傳統編程語言簡單。與傳統C/C++、Java以及C#等編程語言相比,Python對代碼格式的要求低,還具備簡單、免費、兼容性強、用途廣泛以及易學習等特點,因此在學習、操作和應用過程中無須用戶花費太多精力。2) 免費開源。開源意味源代碼是開放式的,所有用戶不需要支付任何費用就可以查看、修改以及使用源代碼,也無須擔心版權問題。3) 可擴展性強。Python語言擁有豐富的模塊,覆蓋了文件I/O、GUI、網絡編程、數據庫訪問以及文本操作等大部分應用場景[3]。
Python具有以下2個缺點:1) 運行速度慢。解釋型語言的通病之一就是運行速度慢,一方面是因為它在運行的同時也在翻譯 “源代碼”;另一方面,Python作為高級語言,屏蔽了許多底層細節,因此工作時會消耗大量資源。2) 代碼加密困難。Python運行程序不是將源代碼編譯成可執行的程序,而是直接運行源代碼,因此存在源碼加密困難的問題。
經過不斷發展,Python的排名已由2020年的第三升至2021年的第一(表1),這表明Python作為新的編程語言已經超越傳統語言(呈上升趨勢),而傳統的C/C++、Java以及C++等語言的排名呈下降的趨勢。

表1 Python在TIOBE榜單的排名
首先,與其他程序語言相比,Python語言變化率低、增長率高(同比最高),為2000—2021年間各大編程語言的最優發展趨勢(見表1)。其次,Python的語法不僅簡潔,而且在強大的第三方程序庫的支持下,其已被應用到各領域中,是目前的主流編程語言之一[4]。
自動化運維是通過運維工具或平臺實現IT基礎設施及業務應用日常任務處理和運維流程的自動化,以期提高效率、降低風險,并促進運維組織的成熟和各種能力的升級。網絡自動化運維內容主要包括日常任務處理、運維流程以及能力升級,具體情況如圖1所示。
自動化運維并不是孤立地建設和運行,需要“自動化”、“配置管理”以及“監控”三者相輔相成,即三者之間既相互獨立又相互聯系,最好的方法是共同建設、共同迭代。
自動化運維分為面向基礎架構的自動化、面向應用的自動化以及面向業務的自動化。而面向基礎架構的自動化主要指基礎設施即服務(IASS)和平臺即服務(PAAS),這個類別的自動化建設目標是降低運維人員的工作量。面向應用的自動化的對象以類(類指模板,一個模板中存在多個函數供使用)和對象(調用被包裝在內的函數)為單位,應用中包括各類基礎架構資源。面向業務的自動化是IT自動化的最終目標,歸根結底是為IT服務。

圖1 網絡自動化運維圖
自動化運維的作用如下:1) 提高運維效率。手動開展運維工作會消耗大量的勞力及財力。自動化運維可以實現批量操作的目標,從而顯著地提高效率和水平。2) 減少錯誤。即使最謹慎的人也會犯錯,尤其是面對重復的工作。通過運維自動化工具來完成相關工作可以降低錯誤率。3) 減少財務支出,效率最大化。運維專家們可以通過運維自動化將精力集中在更復雜、更有戰略意義的業務問題。通過自動化可以減少員工數量和財務支出,實現效率最大化的目標。4) 提高滿意度。自動化運維工具幫助IT運維高效支持業務發展,為內部和外部客戶提供高水平支持。5) 顯著降低成本。當出現系統中斷、人為錯誤以及重復工作等情況時,會付出高昂的費用和代價,而自動化運維可以有效地降低相關成本。
在https://www.Python.org/downloads/ 下載適合系統的Python,在軟件安裝完畢后,需要修改環境變量。具體步驟為在 “系統變量”PATH路徑下添加“C:Python27”
在https://pypi.Python.org/pypi/psutil 下載適合系統的psutil。在安裝前,需要先注冊Python2.7,否則會報錯。因此,該文先對腳本register.py進行編輯注冊,詳細代碼如下。




要監控腳本在其他Windows 上的運行情況,就需要安裝Python環境,可以將監控腳本打包成exe程序發布,當需要運行該Python腳本時,通過單擊腳本exe程序就可以使用程序內置代碼、函數信息執行計算數據的任務。
首先,安裝打包程序py2exe-0.6.9.win32-py2.7.exe。在網頁(http://sourceforge.net/)中找到相應的版本下載打包程序,下載后直接安裝即可。
其次,編寫一個簡單的編譯腳本,腳本如下。
setup_py2exe.py
from distutils.core import setup
Import py2exe
Setup(console=[“monitor.py"])
再次,打包 。進入命令行窗口,在setup_py2exe.py所在的目錄運行Python setup_py2exe.py py2exe。運行后會在當前目錄生成2個文件夾(build和disk),不需要關注build文件夾,只需要重點關注dist文件夾,dist文件夾里面會產生monitor.exe及其他文件,而monitor.exe就是所需要運行的exe程序,如果要運行相關腳本內容、獲取內容,那么僅需要對dist文件夾發布的內容進行讀取、解譯。將dist文件夾發布到其他Windows機器后,直接運行monitor.exe有可能會報錯“由于應用程序配置不正確,應用程序未能啟動”。這是因為py2exe打包的程序需要9.0.21022.8版本的MSVCR90.DLL,可以從網上下載并將其放到dist目錄下一起發布。另外,除了9.0.21022.8版本的MSVCR90.DLL外,還需要將Microsoft.VC90.CRT.manifest文件放在dist目錄下。
其中,該文相關Microsoft.VC90.CRT.manifest腳本代碼如下。
<assembly xmlns="urn:schemas microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable> </noInheritable>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8"
processorArchitecture="x86" publicKeyToken="1fc8b3b9 a1e18e3b"></assemblyIdentity>
<file name="msvcr90.d11" />
</assembly>
最后,完成上述操作后,再次將dist目錄發布到其他Windows服務器上,當需要通過monitor.exe程序進行操作時,須進入dist目錄,通過運行相關monitor.exe程序完成計算內容。
經過不斷發展,Python在第三方庫及各程序員的幫助下,已經成為目前最受歡迎的編程語言之一。 Python具有簡單、靈活以及功能強大等優勢,已經成功應用到運維領域。該文通過讀取磁盤利用率案例對網絡自動化運維進行介紹。而在實際工作中,運維者可以根據自己的需求以及對未來網絡的自動化運維場景的應用需求開發更多的運維工具。借助Python語言打造服務于網絡運維的Python網絡自動化運維技術,擺脫技術對網絡自動化運維的限制,從而提高網絡自動化運維技術。