前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >运维天地-服务器04-X86-PCServer内存信息获取

运维天地-服务器04-X86-PCServer内存信息获取

作者头像
大话IT架构
发布2020-04-02 15:37:34
5270
发布2020-04-02 15:37:34
举报

01

PART

知识回顾

本篇文章,我们重点介绍服务器"内存"信息的获取。

前期知识储备和回顾,请参考以下文章

01)运维天地-服务器01-X86-PCServer属性介绍

02)运维天地-服务器02-X86-PCServer资产信息获取

03)运维天地-服务器02-X86-PCServer CPU信息获取

特别说明:本文的服务器特指X86-PCServer硬件服务器

02

PART

X86-PCServer 内存信息获取

A

获取脚本

#!/usr/bin/python
#-*- coding: utf-8 -*-
#author: wangzhiguo
#date: 2020.01.29

import commands

class MemInfo():
    def __init__(self):
        return

    def get_mem_type(self):
        status, output = commands.getstatusoutput("dmidecode -t memory | grep 'Type: DDR' | sort -u | awk '{print $2}'")
        mem_type = output.strip()
        return mem_type

    def get_mem_speed(self):
        status, output = commands.getstatusoutput("dmidecode -t memory | grep 'Configured Clock Speed:' | grep -v 'Configured Clock Speed: Unknown' | sort -u
 | awk '{print$4}'")
        mem_speed = output.strip()
        return mem_speed

    def get_mem_size(self):
        status, output = commands.getstatusoutput ("dmidecode -t memory | grep 'Size:' | grep -v 'Size: No Module Installed' | sort -u")
        output = output.split(":")[1].split()
        if output[1] == "MB":
            mem_size = int(output[0])/1024
            return mem_size
        elif output[1] == "GB":
            mem_size = int(output[0])
            return mem_size
        elif output[1] == "KB":
            mem_size = int(output[0])/1024/1024
            return mem_size
        elif output[1] == "TB":
            mem_size = int(output[0])*1024
            return mem_size
        else:
            mem_size = int(output[0])
            return mem_size

    def get_mem_num(self):
        status, output = commands.getstatusoutput("dmidecode -t memory | grep 'Size:' | grep -v 'Size: No Module Installed' | wc -l")
        mem_num = output.strip()
        mem_num = int(mem_num)
        return mem_num

    def get_mem_slot_num(self):
        status, output = commands.getstatusoutput("dmidecode -t memory | grep 'Memory Device' | wc -l")
        mem_slot_num = output.strip()
        mem_slot_num = int(mem_slot_num)
        return mem_slot_num

    def get_all(self):
        mem_type = self.get_mem_type()
        mem_speed = self.get_mem_speed()
        mem_size = self.get_mem_size()
        mem_num = self.get_mem_num()
        mem_slot_num = self.get_mem_slot_num()
        return mem_type, mem_speed, mem_size, mem_num, mem_slot_num

def main():
    temp = MemInfo()
    print(temp.get_all())

if __name__ == '__main__':
    main()

B

获取方法概述

  1. 内存信息的获取,其实就利用了dmidecode命令
  2. dmidecode -t momory
  3. 接下来就是字符串的处理(过滤、分割、拼接)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话IT架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档