这篇文章主要为大家详细介绍了 python 获取服务器硬件信息的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import rlcompleter, readline
- readline.parse_and_bind('tab: complete')
- import dmidecode
- import time
- import os
- import re
- system=dmidecode.system()
- print "33[1;36;40m%s33[0m" %"获取服务器硬件信息"
- for x,y in system.items():
- for i in y['data'].items():
- if i[0] == 'Product Name':
- print "33[1;31;40m%s33[0m" % "-"*10
- print 'Server models: %s' %i[1]
- print i
- print "33[1;36;40m%s33[0m" % "获取服务器CPU信息"
- for x,y in dmidecode.processor().items():
- for m,n in y.items():
- if m=='data':
- print "33[1;31;40m%s33[0m" % "-"*10
- for x,y in n.items():
- print x,y
- print "33[1;36;40m%s33[0m" %"获取服务器BIOS信息"
- for x,y in dmidecode.bios().items():
- for m,n in y['data'].items():
- if m.find('Characteristic')!=-1:
- for x,y in n.items():
- print "33[1;34;40m%s33[0m" % "-"*10
- print x,y
- else:
- print "33[1;32;40m%s33[0m" % "-"*10
- print m,n
- print "33[1;36;40m%s33[0m" %"获取服务器内存信息"
- for x,y in dmidecode.memory().items():
- for m,n in y['data'].items():
- print "33[1;34;40m%s33[0m" % "-"*10
- print m,n
- #便于调试,可以删除
- print "x"*50
- print "33[1;36;40m%s33[0m" %"获取服务器主板信息"
- for x,y in dmidecode.baseboard().items():
- #print x,y
- for m,n in y['data'].items():
- print "33[1;34;40m%s33[0m" % "-"*10
- print m,n
- print "33[1;36;40m%s33[0m" %"获取服务器主板插槽信息"
- for x,y in dmidecode.slot().items():
- for m,n in y['data'].items():
- print "33[1;34;40m%s33[0m" % "-"*10
- print m,n
- print "33[1;36;40m%s33[0m" %"获取服务器网卡信息"
- """
- 安装linux硬件信息收集工具包
- """
- #os.system('yum -y install make wget gcc* ;wget http://ezix.org/software/files/lshw-B.02.14.tar.gz ; tar -zxvf lshw-B.02.14
- .tar.gz ;cd lshw-B.02.14 ; make && make install ; cd .. ; rm -rf lshw-B.02.14* ')
- netcard=os.popen('lshw -C network ').read( )
- print "产品名称: %s" % re.findall('product:.+(?#测试)',netcard)[0]
- print "网卡速度: %s" % re.findall('size:.+(?#测试)',netcard)[0]
- n=len(re.findall('*-network:',netcard))
- if n==0:
- print "网卡IP地址: %s" %re.findall('ip=d{1,3}.d{1,3}.d{1,3}.d{1,3}',netcard)[0]
- else:
- for i in range(0,n):
- try:
- print "网卡IP地址: %s" %re.findall('ip=d{1,3}.d{1,3}.d{1,3}.d{1,3}',netcard)[i]
- except IndexError:
- i+=1
- print "第%s块网卡没有IP地址" %i
- #print "网卡IP地址: %s" % re.findall('ip=d{1,3}.d{1,3}.d{1,3}.d{1,3}',netcard)[0]
- print "网卡状态: %s " % re.findall('link=w{3}(?#测试)',netcard)[0]
- print "网卡MAC地址: %s " % re.findall('serial:.+(?#测试)',netcard)[0]
- print "网卡厂家: %s " % re.findall('vendor:.+(?#测试)',netcard)[0]
- print "网络接口名称: %s" % re.findall('logical name:.+(?#测试)',netcard)[0]
- """
- 获取系统信息
- """
- print "33[1;36;40m%s33[0m" %"获取服务器操作系统信息"
- import platform
- print "系统cpu位数: %s " % platform.processor()
- print "系统信息: %s " % platform.system()
- print "操作系统类型: %s" % platform.dist()[0]
- print "系统主机名: %s " % platform.node()
来源: http://www.phperz.com/article/17/0601/335429.html