获取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

posted @ 2016-11-17 14:46  chen_vbird  阅读(1837)  评论(0编辑  收藏  举报