#!/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

获取Linux主机的CPU、内存、主板、BIOS的信息(Centos)的更多相关文章

  1. 用python实现批量获取Linux主机简要信息并保存到Excel中 unstable 1.1

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- #filename get_linux_info.py #获取Linux主机的信息 # titles=[' ...

  2. linux Java项目CPU内存占用高故障排查

    linux Java项目CPU内存占用高故障排查 top -Hp 进程号 显示进程中每个线程信息,配合jstack定位java线程运行情况 # 线程详情 jstack 线程PID # 查看堆内存中的对 ...

  3. AIX/Linux/HP-UX查看CPU/内存/磁盘/存储命令

    1.1    硬件环境验证方式 硬件环境主要包括CPU.内存.磁盘/存储.网络设备(如F5等).系统特有设备(如密押设备等)等,其中网络设备和系统特有设备由网络管理员或项目组提供为准,本节主要关注CP ...

  4. linux查看系统CPU,内存,硬盘使用情况

    top查看CPU,内存使用情况 free查看硬盘使用情况

  5. PHP 获取linux服务器性能CPU、内存、硬盘、进程等使用率

    数据库配置文件: conn.php <?php define("MONITORED_IP", "172.16.0.191"); //被监控的服务器IP地址 ...

  6. delphi 获取硬盘序列号、cpu号、bios号、网卡号

    delphi 获取硬盘 序列号 function GetIdeNum: String; type TSrbIoControl = packed record HeaderLength : ULONG; ...

  7. python 在linux下通过top,和dh命令获得cpu,内存,以及硬盘信息

    主要是通过os.popen读取命令输出实现的,os.popen启动新的进程,且将外部命令的输出作为文件类型对象返回.不能获得外部命令的返回值.既然是文件对象就可以直接用for in 来读取,代码如下: ...

  8. c#获取电脑运行状态(cpu,内存,网络,系统运行时间)

    public class DeviceMonitor { static readonly PerformanceCounter cpuCounter = new PerformanceCounter( ...

  9. [bash] 获取linux主机名,检视内中是否有特定字符串

    代码: #!/bin/bash hostname=$(hostname) #调用hostname命令获取主机名放入变量hostname中 #echo $hostname if [ `echo ${ho ...

随机推荐

  1. iframe中positioin:fixed失效问题

    页面中嵌套的iframe 内的 position:fixed元素定位失效fixed正常页面 此时position:fixed是根据浏览器窗口定位的,下拉一直位于左上角:以iframe形式嵌入后 此时p ...

  2. JQuery.validate.js 表单验证

    官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/API: http://jquery.bassistance.de ...

  3. 使用极光/友盟推送,APP进程杀死后为什么收不到推送(转)

    为什么会存在这样的 问题,刚开始的时候我也搞不清楚,之前用极光的时候杀死程序后也会收到推送,但最近重新再去集成时就完全不好使了,这我就纳闷了,虽然Google在高版本上的android上面不建议线程守 ...

  4. .net 开发---windows服务

    因为想把quartz.net自动run的程式挂到windows服务中去,遇到问题记录 1.创建windows服务后,利用C:\Windows\Microsoft.NET\Framework\v4.0. ...

  5. C# 中对 ArrayList 的排序

    ArrayList 元素 //目录条目类 public class FolderItem { public string filename; public string filetype; publi ...

  6. 【逆向篇】分析一段简单的ShellCode——从TEB到函数地址获取

    其实分在逆向篇不太合适,因为并没有逆向什么程序. 在http://www.exploit-db.com/exploits/28996/上看到这么一段最简单的ShellCode,其中的技术也是比较常见的 ...

  7. WPF-禁止二次启动

    App.xaml.cs protected override void OnStartup(StartupEventArgs e) { //禁止二次启动 this.Startup += new Sta ...

  8. arcmap插件不能调试(转)

    1, 进入ArcGIS Desktop安装目录,如:C:\Program Files\ArcGIS\Desktop10.0 2, 进入Bin文件夹,备份ArcMap.exe.config文件,以备恢复 ...

  9. 使用THINKPHP中的控制器和模块查询数据库

    1,自定义一个UserController的控制器,导入tp的控制器与模块执行相应的操作. ----var_dump()方法是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值. ...

  10. CentOS7 编译安装LVS 互为主备 (实测 笔记 Centos 7.0 + ipvsadm 1.27 + keepalived 1.2.15 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) LVS服务器(两台): 系统:Centos7.0 64位(LVS+keepalived) LvsMaster:1 ...