获取Linux主机的CPU、内存、主板、BIOS的信息(Centos)
#!/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