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

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

作者头像
大话IT架构
发布2020-03-31 17:00:16
5160
发布2020-03-31 17:00:16
举报
文章被收录于专栏:大话IT架构大话IT架构

01

PART

知识回顾

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

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

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

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

02

PART

X86-PCServer资产信息获取

A

获取脚本

代码语言:javascript
复制
#!/usr/bin/python
#-*- coding: utf-8 -*-
#author: wangzhiguo
#date: 2020.01.28

import commands
import re

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

    def get_manufacturer(self):
        status, output = commands.getstatusoutput("/usr/sbin/dmidecode -t system | grep Manufacturer")
        if re.findall('inspur', output, re.IGNORECASE): 
            manufacturer = "INSPUR"
            return manufacturer
        elif re.findall('sugon', output, re.IGNORECASE): 
            manufacturer = "SUGON"
            return manufacturer
        elif re.findall('huawei', output, re.IGNORECASE): 
            manufacturer = "HUAWEI"
            return manufacturer
        elif re.findall('h3c', output, re.IGNORECASE): 
            manufacturer = "H3C"
            return manufacturer
        elif re.findall('dell', output, flags=re.IGNORECASE):
            manufacturer = "DELL"
            return manufacturer
        elif re.findall('hp', output, flags=re.IGNORECASE):
            manufacturer = "HP"
            return manufacturer
        elif re.findall('ibm', output, flags=re.IGNORECASE):
            manufacturer = "IBM"
            return manufacturer
        else:
            manufacturer = "OTHER"
            return manufacturer

    def get_product_name_part(self):
    #fit for hp/h3c/dell
        status, output = commands.getstatusoutput("dmidecode -t system | grep 'Product Name'")
        output =output.split(":")[1].lstrip().split()
        del output[0]
        product_name = ""
        for temp in output:
            product_name += temp
        return product_name

    def get_product_name_all(self):
    #fit for inspur/sugon/huawei
        status, output = commands.getstatusoutput("dmidecode -t system | grep 'Product Name'")
        output =output.split(":")[1].lstrip().split()
        product_name = ""
        for temp in output:
            product_name += temp
        return product_name


    def get_serial_number(self):
        status, output = commands.getstatusoutput("dmidecode -t system | grep 'Serial Number'")
        serial_number = output.split(":")[1].strip()
        return serial_number

    def get_all(self):
        status, output = commands.getstatusoutput("/usr/sbin/dmidecode -t system | grep Manufacturer")
        if re.findall('inspur', output, re.IGNORECASE): 
            manufacturer = "INSPUR"
            product_name = self.get_product_name_all()
            serial_number = self.get_serial_number()
            return manufacturer, product_name, serial_number
        elif re.findall('sugon', output, re.IGNORECASE): 
            manufacturer = "SUGON"
            product_name = self.get_product_name_all()
            serial_number = self.get_serial_number()
            return manufacturer, product_name, serial_number
        elif re.findall('huawei', output, re.IGNORECASE): 
            manufacturer = "HUAWEI"
            product_name = self.get_product_name_all()
            serial_number = self.get_serial_number()
            return manufacturer, product_name, serial_number
        elif re.findall('h3c', output, re.IGNORECASE): 
            manufacturer = "H3C"
            product_name = self.get_product_name_part()
            serial_number = self.get_serial_number()
            return manufacturer, product_name, serial_number
        elif re.findall('dell', output, flags=re.IGNORECASE):
            manufacturer = "DELL"
            product_name = self.get_product_name_part()
            serial_number = self.get_serial_number()
            return manufacturer, product_name, serial_number
        elif re.findall('hp', output, flags=re.IGNORECASE):
            manufacturer = "HP"
            product_name = self.get_product_name_part()
            serial_number = self.get_serial_number()
            return manufacturer, product_name, serial_number
        elif re.findall('ibm', output, flags=re.IGNORECASE):
            manufacturer = "IBM"
            product_name = self.get_product_name_all()
            serial_number = self.get_serial_number()
            return manufacturer, product_name, serial_number
        else:
            manufacturer = "OTHER"
            product_name = self.get_product_name_all()
            serial_number = self.get_serial_number()
            return manufacturer, product_name, serial_number

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

if __name__ == '__main__':
    main()

B

获取方法概述

  1. 资产信息的获取,其实就利用了dmidecode命令
  2. dmidecode -t system
  3. 接下来就是字符串的处理(过滤、分割、拼接)

IT架构更多学习:请关注"大话IT架构"公众号

LOMO

个人价值观:利他双赢

个人微信号:it_beijing

IT领域交流精进群,请加个人微信:it_beijing

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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