#!/usr/bin/env python #coding:utf-8 import subprocess import re def Cmd_Exec(cmd): ''' 執行獲取信息命令 :param cmd: :return: ''' result = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True) return result.stdout.read() Cmd ={ 'cpu':'cat /proc/cpuinfo', 'mem':'cat /proc/meminfo', 'bios':'dmidecode -t 0', 'motherbord':'dmidecode -t 1' } host_info ={} #主機信息表 for k,v in Cmd.items(): if k == 'cpu': rst_cpu = Cmd_Exec(v) cpu_info = { 'CPU生產商':re.search('vendor_id\s*:.*', rst_cpu).group().split(':')[1], # 提供者 'CPU類型': re.search('model name\s*:.*', rst_cpu).group().split(':')[1], # 型號 'CPU主頻': re.search('cpu MHz\s*:.*', rst_cpu).group().split(':')[1], # 主頻 'CPU緩存': re.search('cache size\s*:.*', rst_cpu).group().split(':')[1], # cpu的緩存 '物理CPU個數': re.search('physical id\s*:.*', rst_cpu).group().split(':')[1], # cpu物理個數 'CPU盒數': re.search('cpu cores\s*:.*', rst_cpu).group().split(':')[1] # cpu盒數 } host_info[k] = cpu_info elif k == 'mem': rst_mem = Cmd_Exec(v) mem_info = { 'MemTotal': re.search('MemTotal:\s*.*', rst_mem).group().split(':')[1].strip(), # 機器總內存大小 'MemFree': re.search('MemFree:\s*.*', rst_mem).group().split(':')[1].strip(), # 機器當前空閑物理內存 #'MemAvailable': re.search('MemAvailable:\s*.*', rst_mem).group().split(':')[1].strip(), # 機器可用內存邏輯內存 'Buffers': re.search('Buffers:\s*.*', rst_mem).group().split(':')[1].strip(), # 內存當前的buffer值 'Cached': re.search('Cached:\s*.*', rst_mem).group().split(':')[1].strip(), # 內存當前的Cache值 'SwapTotal': re.search('SwapTotal:\s*.*', rst_mem).group().split(':')[1].strip(), # 交換分區的大小 'SwapFree': re.search('SwapFree:\s*.*', rst_mem).group().split(':')[1].strip(), # 空閑交換分區大小 } host_info[k] = mem_info elif k == 'bios': rst_bios = Cmd_Exec(v) bios_info = { re.search('\s*Vendor:.*', rst_bios).group(0).strip().split(':')[0]: re.search('\s*Vendor:.*', rst_bios).group(0).strip().split(':')[0].strip(), re.search('\s*Version:.*', rst_bios).group(0).strip().split(':')[0]: re.search('\s*Version:.*', rst_bios).group(0).strip().split(':')[1].strip(), re.search('\s*Release Date:.*', rst_bios).group(0).strip().split(':')[0]: re.search('\s*Release Date:.*', rst_bios).group(0).strip().split(':')[1].strip() } host_info[k] = bios_info elif k == 'motherbord': rst_mb= Cmd_Exec(v) motherboard_info = { re.search('\s*Product Name:.*', rst_mb).group(0).strip().split(':')[0]: re.search('\s*Product Name:.*', rst_mb).group(0).strip().split(':')[1].strip(), re.search('\s*Version:.*', rst_mb).group(0).strip().split(':')[0]: re.search('\s*Version:.*', rst_mb).group(0).strip().split(':')[1].strip(), re.search('\s*Serial Number:.*', rst_mb).group(0).strip().split(':')[0]: re.search('\s*Serial Number:.*', rst_mb).group(0).strip().split(':')[1].strip() } host_info[k] = motherboard_info else: print '不匹配' for k,v in host_info.items(): print '============='+k+'=============' for k1,v1 in v.items(): print k1 +": "+v1
執行結果如下:
=============mem=============
MemTotal: 1876632 kB
Cached: 455472 kB
SwapFree: 2047996 kB
SwapTotal: 2047996 kB
MemFree: 776972 kB
Buffers: 876 kB
=============bios=============
Version: 6.00
Vendor: Vendor
Release Date: 07/31/2013
=============motherboard=============
Serial Number: VMware-56 4d fc a3 c4 42 1b 81-67 f8 f1 58 53 8a 0d b3
Version: None
Product Name: VMware Virtual Platform
=============cpu=============
CPU緩存: 8192 KB
CPU類型: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
CPU主頻: 3408.000
CPU盒數: 2
CPU物理個數: 0
CPU生產商: GenuineIntel