first commit

This commit is contained in:
Semi212 committed 2021-09-15 11:33:58 +08:00
commit 54ccfb11fe
218 files changed
+19525

No files matched your search

+192
View File
@@ -0,0 +1,192 @@
'''
author : Hatcher W
Email: hcwang@semi.ac.cn
use: 检测通用计算平台的硬件信息
'''
from __future__ import print_function
from collections import OrderedDict
import subprocess
def cpuinfo():
"""
Return the information in /proc/cpuinfo
as a dictionary in the following format:
cpu_info['proc0']={...}
cpu_info['proc1']={...}
"""
cpuinfo = OrderedDict()
procinfo = OrderedDict()
nprocs = 0
with open('/proc/cpuinfo') as f:
for line in f:
if not line.strip():
# end of one processor
cpuinfo['proc%s' % nprocs] = procinfo
nprocs = nprocs + 1
# Reset
procinfo = OrderedDict()
else:
if len(line.split(':')) == 2:
procinfo[line.split(':')[0].strip()] = line.split(':')[1].strip()
else:
procinfo[line.split(':')[0].strip()] = ''
return cpuinfo
def meminfo():
"""
Return the information in /proc/meminfo
as a dictionary
"""
meminfo = OrderedDict()
with open('/proc/meminfo') as f:
for line in f:
meminfo[line.split(':')[0]] = line.split(':')[1].strip()
return meminfo
def gpuinfo():
"""
Return the information in /proc/gpuinfo
as a dictionary
"""
gpuinfo = OrderedDict()
with open('/proc/gpuinfo') as f:
for line in f:
meminfo[line.split(':')[0]] = line.split(':')[1].strip()
return gpuinfo
def getosversion():
with open('/etc/issue') as fd:
for line in fd:
osver = line.strip()
break
return {'osver':osver}
def getBaseboardSerialnumber ():
p = subprocess.Popen(["sudo dmidecode -t 2 | grep Serial"], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE , stderr=subprocess.PIPE)
data = p.stdout
lines = []
while True:
line = str(data.readline(), encoding="utf-8")
if line == '\n':
break
if line:
d = dict([line.strip().split(': ')])
lines.append(d)
else:
break
return lines
def getCpuId():
p = subprocess.Popen(["sudo dmidecode -t 4 | grep ID"], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE , stderr=subprocess.PIPE)
data = p.stdout
lines = []
while True:
line = str(data.readline(), encoding="utf-8")
if line == '\n':
break
if line:
d = dict([line.strip().split(': ')])
lines.append(d)
else:
break
return lines
def getMachineNum():
p = subprocess.Popen(["sudo dmidecode | grep 'Product Name'"], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE , stderr=subprocess.PIPE)
data = p.stdout
lines = []
while True:
line = str(data.readline(), encoding="utf-8")
if line == '\n':
break
if line:
d = dict([line.strip().split(': ')])
lines.append(d)
else:
break
return lines
def getGPU():
p = subprocess.Popen(["sudo lspci -vnn | grep VGA -A 12"], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE , stderr=subprocess.PIPE)
data = p.stdout
print(data)
lines = []
while True:
line = str(data.readline(), encoding="utf-8")
print(type(line))
if line == '\n' :
break
if type(line)!="dict":
continue
if line:
d = dict([line.strip().split(': ')])
lines.append(d)
else:
break
return lines
if __name__ == '__main__':
#print(meminfo())
#gpuinfo = gpuinfo()
#getgpu = getGPU()
getmachinenum = getMachineNum()
getbaseboardserialnumber =getBaseboardSerialnumber()
getcpuid = getCpuId()
osver = getosversion()
meminfo = meminfo()
cpuinfo = cpuinfo()
#exit()
print(cpuinfo["proc0"]["model name"])
if cpuinfo["proc0"]["model name"] == "Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz":
print(cpuinfo["proc0"]["model name"])
print("model name is ok")
else:
print(cpuinfo["proc0"]["model name"])
print("CPU model is wrong")
if getcpuid[0]['ID'] == '57 06 05 00 FF FB EB BF':
print(getcpuid[0]['ID'])
print("getcpuid is ok")
else:
print(getcpuid[0]['ID'])
print("getcpuid is wrong")
if cpuinfo["proc0"]["microcode"] == "0x5002f01":
print(cpuinfo["proc0"]["microcode"])
print("microcode is ok")
else:
print(cpuinfo["proc0"]["microcode"])
print("microcode is wrong")
if cpuinfo["proc0"]["vendor_id"] == "GenuineIntel":
print(cpuinfo["proc0"]["vendor_id"])
print("vendor_id is ok")
else:
print(cpuinfo["proc0"]["vendor_id"])
print("vendor_id is wrong")
if meminfo['MemTotal'] == "394851452 kB":
print(meminfo['MemTotal'])
print("MemTotal is ok")
else:
print(meminfo['MemTotal'])
print("MemTotal is wrong")
if osver['osver'] == 'Ubuntu 16.04.6 LTS \\n \\l':
print(osver['osver'])
print("osver is ok")
else:
print(osver['osver'])
print("osver is wrong")
if getbaseboardserialnumber[0]['Serial Number'] == 'VM194S002416':
print(getbaseboardserialnumber[0]['Serial Number'])
print("getbaseboardserialnumber is ok")
else:
print(getbaseboardserialnumber[0]['Serial Number'])
print("getbaseboardserialnumber is wrong")
if getmachinenum[0]['Product Name'] == 'SYS-4029GP-TRT':
print(getmachinenum[0]['Product Name'])
print("Product Name is ok")
else:
print(getmachinenum[0]['Product Name'])
print("Product Name is wrong")
#print(cpuinfo)
#for processor in cpuinfo.keys():
#print(cpuinfo[processor]['model name'])