方法一:psutil模块

#!usr/bin/env python
# -*- coding: utf-8 -*-import socket
import psutil
class NodeResource(object):def get_host_info(self):host_name = socket.gethostname()return {'host_name':host_name}def get_cpu_state(self):cpu_count = psutil.cpu_count(logical=False)cpu_percent =(str)(psutil.cpu_percent(1))+'%'return {'cpu_count':cpu_count,'cpu_percent':cpu_percent}def get_memory_state(self):mem = psutil.virtual_memory()mem_total = mem.total / 1024 / 1024mem_free = mem.available /1024/1024mem_percent = '%s%%'%mem.percentreturn {'mem_toal':mem_total,'mem_free':mem_free,'mem_percent':mem_percent}def get_disk_state(self):disk_stat = psutil.disk_usage('/')disk_total = disk_stat.totaldisk_free = disk_stat.freedisk_percent = '%s%%'%disk_stat.percentreturn {'mem_toal': disk_total, 'mem_free': disk_free, 'mem_percent': disk_percent}psutil

方法二:、proc

#!usr/bin/env python
# -*- coding: utf-8 -*-
#遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
#寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
import time
import os
from multiprocessing import cpu_countclass NodeResource(object):def usage_percent(self,use, total):# 返回百分占比try:ret = int(float(use)/ total * 100)except ZeroDivisionError:raise Exception("ERROR - zero division error")return '%s%%'%ret@propertydef cpu_stat(self,interval = 1):cpu_num = cpu_count()with open("/proc/stat", "r") as f:line = f.readline()spl = line.split(" ")worktime_1 = sum([int(i) for i in spl[2:]])idletime_1 = int(spl[5])time.sleep(interval)with open("/proc/stat", "r") as f:line = f.readline()spl = line.split(" ")worktime_2 = sum([int(i) for i in spl[2:]])idletime_2 = int(spl[5])dworktime = (worktime_2 - worktime_1)didletime = (idletime_2 - idletime_1)cpu_percent = self.usage_percent(dworktime - didletime,didletime)return {'cpu_count':cpu_num,'cpu_percent':cpu_percent}@propertydef disk_stat(self):hd = {}disk = os.statvfs("/")hd['available'] = disk.f_bsize * disk.f_bfreehd['capacity'] = disk.f_bsize * disk.f_blockshd['used'] =  hd['capacity'] - hd['available']hd['used_percent'] = self.usage_percent(hd['used'], hd['capacity'])return hd@propertydef memory_stat(self):mem = {}with open("/proc/meminfo") as f:for line in f:line = line.strip()if len(line) < 2: continuename = line.split(':')[0]var = line.split(':')[1].split()[0]mem[name] = long(var) * 1024.0mem['MemUsed'] = mem['MemTotal'] - mem['MemFree'] - mem['Buffers'] - mem['Cached']mem['used_percent'] = self.usage_percent(mem['MemUsed'],mem['MemTotal'])return {'MemUsed':mem['MemUsed'],'MemTotal':mem['MemTotal'],'used_percent':mem['used_percent']}nr = NodeResource()print nr.cpu_stat
print '=================='
print nr.disk_stat
print '=================='
print nr.memory_statproc

方法三:subprocess

from subprocess import Popen, PIPE
import os,sys''' 获取 ifconfig 命令的输出 '''
def getIfconfig():p = Popen(['ifconfig'], stdout = PIPE)data = p.stdout.read()return data''' 获取 dmidecode 命令的输出 '''
def getDmi():p = Popen(['dmidecode'], stdout = PIPE)data = p.stdout.read()return data''' 根据空行分段落 返回段落列表'''
def parseData(data):parsed_data = []new_line = ''data = [i for i in data.split('\n') if i]for line in data:if line[0].strip():parsed_data.append(new_line)new_line = line + '\n'else:new_line += line + '\n'parsed_data.append(new_line)return [i for i in parsed_data if i]''' 根据输入的段落数据分析出ifconfig的每个网卡ip信息 '''
def parseIfconfig(parsed_data):dic = {}parsed_data = [i for i in parsed_data if not i.startswith('lo')]for lines in parsed_data:line_list = lines.split('\n')devname = line_list[0].split()[0]macaddr = line_list[0].split()[-1]ipaddr  = line_list[1].split()[1].split(':')[1]breakdic['ip'] = ipaddrreturn dic''' 根据输入的dmi段落数据 分析出指定参数 '''
def parseDmi(parsed_data):dic = {}parsed_data = [i for i in parsed_data if i.startswith('System Information')]parsed_data = [i for i in parsed_data[0].split('\n')[1:] if i]dmi_dic = dict([i.strip().split(':') for i in parsed_data])dic['vender'] = dmi_dic['Manufacturer'].strip()dic['product'] = dmi_dic['Product Name'].strip()dic['sn'] = dmi_dic['Serial Number'].strip()return dic''' 获取Linux系统主机名称 '''
def getHostname():with open('/etc/sysconfig/network') as fd:for line in fd:if line.startswith('HOSTNAME'):hostname = line.split('=')[1].strip()breakreturn {'hostname':hostname}''' 获取Linux系统的版本信息 '''
def getOsVersion():with open('/etc/issue') as fd:for line in fd:osver = line.strip()breakreturn {'osver':osver}''' 获取CPU的型号和CPU的核心数 '''
def getCpu():num = 0with open('/proc/cpuinfo') as fd:for line in fd:if line.startswith('processor'):num += 1if line.startswith('model name'):cpu_model = line.split(':')[1].strip().split()cpu_model = cpu_model[0] + ' ' + cpu_model[2]  + ' ' + cpu_model[-1]return {'cpu_num':num, 'cpu_model':cpu_model}''' 获取Linux系统的总物理内存 '''
def getMemory():with open('/proc/meminfo') as fd:for line in fd:if line.startswith('MemTotal'):mem = int(line.split()[1].strip())breakmem = '%.f' % (mem / 1024.0) + ' MB'return {'Memory':mem}if __name__ == '__main__':dic = {}data_ip = getIfconfig()parsed_data_ip = parseData(data_ip)ip = parseIfconfig(parsed_data_ip)data_dmi = getDmi()parsed_data_dmi = parseData(data_dmi)dmi = parseDmi(parsed_data_dmi)hostname = getHostname()osver = getOsVersion()cpu = getCpu()mem = getMemory()dic.update(ip)dic.update(dmi)dic.update(hostname)dic.update(osver)dic.update(cpu)dic.update(mem)''' 将获取到的所有数据信息并按简单格式对齐显示 '''for k,v in dic.items():print '%-10s:%s' % (k, v)pipe,poen
from subprocess import Popen, PIPE
import time''' 获取 ifconfig 命令的输出 '''
# def getIfconfig():
#     p = Popen(['ipconfig'], stdout = PIPE)
#     data = p.stdout.read()
#     data = data.decode('cp936').encode('utf-8')
#     return data
#
# print(getIfconfig())p = Popen(['top -n 2 -d |grep Cpu'],stdout= PIPE,shell=True)
data = p.stdout.read()
info = data.split('\n')[1]
info_list =  info.split()
cpu_percent ='%s%%'%int(float(info_list[1])+float(info_list[3]))
print cpu_percenttop+Popen

用Python获取Linux资源信息的三种方法相关推荐

  1. php mysql 表字段_php mysql获取表字段名称和字段信息的三种方法

    php mysql获取表字段名称和字段信息的三种方法 先给出本实例中使用的表的信息: 使用desc获取表字段信息 php代码如下: mysql_connect("localhost" ...

  2. python 命令-python解析命令行参数的三种方法详解

    这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法: ...

  3. python判断字符串合法,详解Python判定IP地址合法性的三种方法 python中判断一个字符串是否是IP地址...

    html 中 鼠标放在标签上会显示小手状,其它标签在其他标签上,美工给加了一些样式,鼠标放上去也显示小手状.有哪位大手状样式 有什么不懂的前端问题可以去菜鸟驿站.全都是泡沫,只一刹的花火,所谓的友情, ...

  4. 获取网站 favicon.ico 的三种方法

    获取网站 favicon.ico的三种方法 方法一: 直接在网站网址后面加favicon.ico 例如:https://www.baidu.com/favicon.ico (有一些网站可能会直接跳转到 ...

  5. php的header_php获取网页header信息的4种方法

    php获取网页header信息的方法多种多样,就php语言来说,我知道的方法有4种, 下面逐一献上. 方法一:使用get_headers()函数 推荐指数: ★★★★★ get_header方法最简单 ...

  6. python csv库,Python 中导入csv数据的三种方法

    Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...

  7. python打开文件不存在-Python判断文件是否存在的三种方法

    原标题:Python判断文件是否存在的三种方法 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件 ...

  8. linux监控命令执行,你可能不知道的 即时监控 Linux 使用者执行指令的三种方法...

    原标题:你可能不知道的 即时监控 Linux 使用者执行指令的三种方法 这里介绍如何在 Linux 系统上以管理者权限即时监控一般使用者所执行的任何指令. Linux 的 root 管理者可对系统进行 ...

  9. js获取DIV的位置坐标的三种方法!

    js获取DIV的位置坐标的三种方法! 方法一: var odiv=document.getElementById('divid'); alert(odiv.getBoundingClientRect( ...

最新文章

  1. Exchange 2003群集的安装
  2. 属性定义为 not null unique_土味情话为你倾尽天下,你共赏盛世繁华
  3. Vagrant 手册之多个虚拟机 multi-machine
  4. 【SPFA】桐人的约会
  5. uni-app微信获取手机号,第一次解密总是失败
  6. css控制div等比高度
  7. 项目管理工具project软件学习(五) - 创建WBS、设置任务依赖关系
  8. 上海阅文集团android面试题,2018年阅文集团PHP工程师面试题分享
  9. Spring boot 2.4开启静态资源缓存
  10. java连接池hkai,MySQL连接配置文件密码加密及其在多种连接池上的应用
  11. c语言程序超市广告推广流程图,C语言程序设计超市管理系统1.doc
  12. 软件功能测试ok,S7_200解密软件,测试OK
  13. extjs 6.x 的使用
  14. Python解决同一台如何调用多台usb打印机
  15. 阿里云发布企业云原生IT成本治理方案:五大能力加速企业 FinOps 进程
  16. android 4.4打开MTP模式以及USB CD Rom模式打开方法
  17. qs.stringify
  18. 2021手机试玩平台《手赚网》源码
  19. 谈谈游戏中的帮派设计
  20. nest class-validator验证修饰器中文文档

热门文章

  1. 红帽发布了下一代OpenShift Online
  2. Sublime text 简单配置
  3. 浅谈软件性能测试中关键指标的监控与分析(转)
  4. 基于linux使用mysql二进制包安装mysql
  5. Kinect+OpenNI学习笔记之4(OpenNI获取的图像结合OpenCV显示)
  6. 苹果欲借免费纳米SIM卡技术控制行业标准
  7. Asp.net中基于Forms验证的角色验证授权[转]
  8. 3、Power Query-智能汇总工作簿下的指定或所有工作表数据
  9. 对于多个 BAPI一起commit!
  10. SAP快速找到定制配置