因爲公司現階段大多數應用軟件都是基於Windows系統開發和部署,不少軟件安裝部署都是在windows server 20十二、windows server 2008之類的服務器上,部門同事每次測試一輪迭代或者系統測試後,在寫測試報告時都須要在報告中寫上測試的服務器硬件配置,如CPU、操做系統版本、內存、磁盤等,須要去遠程服務器而後在服務器上各類查看服務器配置,比較浪費時間。最近學習了Python相關的知識,發現使用PYWIN32+WMI模塊能夠獲取windows系統基本信息,並安裝pyinstaller庫,能夠將寫好的python腳本打包編譯成exe的可執行文件,並將運行的結果寫到生成的txt文本文件中,方便查看,而後就能夠在任何一臺windows系統的服務器上運行,獲得服務器配置。python
基於以上實現方式,果斷開始安裝配置所須要的模塊和庫,至於安裝過程百度上有不少人已經給了說明,根據本身的Python版本對應安裝便可。下面貼下能夠參考的安裝連接文檔:小程序
PYWIN32+WMI模塊安裝:https://blog.csdn.net/franktan2010/article/details/46520563 windows
pyinstaller模塊安裝:https://blog.csdn.net/Jarvis_F/article/details/80367865 或者 https://blog.csdn.net/whl826661099/article/details/79624326服務器
我如今使用的Python版本是Python3.6,開發編輯工具是PyCharm,整個安裝完成後打開PyCharm進入Settings在工程目錄下看到有以下package說明環境OK了,以下圖個人安裝:函數
須要的庫安裝配置好了後,開始學習WMI模塊提供的方法,根據上面的需求咱們的目的是獲取操做系統的信息,將獲取的配置信息寫到txt的文本文件中,並使用pyinstaller打包編譯成exe文件,Python代碼走起,以下代碼爲實現過程:工具
1 ''' 2 Code description:Create time:Developer: 3 ''' 4 # -*- coding: utf-8 -*- 5 import wmi 6 import os 7 8 print("###使用說明:請打開計算機基礎配置文件夾,進入到dist目錄下,雙擊運行:計算機基礎配置信息.exe文件," 9 "在命令行窗口輸入保存的文件名,運行完成後打開生成的txt文本便可查看獲取到的計算機基礎配置信息###") 10 while True: 11 fname=input('enter filename>') 12 if os.path.exists(fname): 13 print("Error:'%s' already exists" %fname) 14 else: 15 break 16 # open函數在打開目錄中進行檢查,若是有則打開,不然新建 17 fobj=open(fname,'a',encoding='utf-8') 18 19 # 獲取操做系統版本信息 20 def sys_version(): 21 c = wmi.WMI() 22 for sys in c.Win32_OperatingSystem(): 23 print("操做系統版本:%s" % sys.Caption) 24 fobj.write('操做系統版本:' + sys.Caption) 25 print("操做系統位數:",sys.OSArchitecture) 26 fobj.write('\n' + '操做系統位數:' + sys.OSArchitecture) 27 # 獲取機器IP和MAC地址以及網卡類型 28 def getIP(): 29 c = wmi.WMI() 30 for interface in c.Win32_NetworkAdapterConfiguration(IPEnabled=1): 31 print("網口型號爲:",interface.Description) 32 fobj.write('\n' + '網口型號爲:' + interface.Description) 33 for ip_address in interface.IPAddress: 34 print(ip_address) 35 fobj.write('\n' + 'IP地址和MAC地址:' + ip_address) 36 # 獲取CPU和內存大小 37 def cpu_and_mem(): 38 c = wmi.WMI() 39 for cpu in c.Win32_Processor(): 40 print("CPU: %s" % cpu.Name.strip()) 41 fobj.write('\n' + 'CPU:' + cpu.Name.strip()) 42 for Memory in c.Win32_PhysicalMemory(): 43 print("內存大小: %.fGB" % ( (int(Memory.Capacity) / 1048576) /1024) ) 44 fobj.write('\n' + "內存大小: %.fGB" % ( (int(Memory.Capacity) / 1048576) /1024) ) 45 # 獲取磁盤分區和各分區大小 46 def disk(): 47 c = wmi.WMI() 48 # 獲取硬盤分區 49 for physical_disk in c.Win32_DiskDrive(): 50 for partition in physical_disk.associators("Win32_DiskDriveToDiskPartition"): 51 for logical_disk in partition.associators("Win32_LogicalDiskToPartition"): 52 print(physical_disk.Caption, partition.Caption, logical_disk.Caption) 53 fobj.write('\n' + '磁盤分區:' + physical_disk.Caption + partition.Caption + logical_disk.Caption) 54 # 獲取各個磁盤分區大小 55 for disk in c.Win32_LogicalDisk(DriveType=3): 56 # print(disk.Caption, "%0.2f%% free" % (100.0 * int(disk.FreeSpace) / int(disk.Size))) 57 print(disk.Caption,"磁盤大小: %0.1fGB" % ((int(disk.Size) / 1048576) / 1024)) 58 fobj.write('\n' +disk.Caption + "磁盤大小: %0.1fGB" % ((int(disk.Size) / 1048576) / 1024)) 59 def main(): 60 sys_version() 61 getIP() 62 cpu_and_mem() 63 disk() 64 if __name__ == '__main__': 65 main() 66 67 fobj.close()
代碼寫好後,將腳本文件放入下載後解壓的pyinstaller路徑下,以下圖:學習
而後cmd打開黑色命令行,cd 到上圖的路徑下,而後輸入命令:python pyinstaller.py -F ***.py ,其中***.py爲已經放置好的py腳本,回車,等待運行編譯打包,看到successfully字樣說明咱們打包編譯成功了,以下圖:測試
而後在該路徑下會生成一個以py文件名稱同名的文件夾,在該文件夾下的dist下面就有編譯好的exe可執行程序啦spa
後續能夠將該exe可執行程序在任何一個windows機器上一鍵運行,獲得運行結果的txt文本也在dist目錄下,以下:操作系統
這樣,這個小小的基於Python3編寫的腳本小程序算是基本實現了最初咱們想要達到的目的,之後不再用各類查看服務器信息了,一鍵運行解決。O(∩_∩)O~~