php执行dmidecode,Python:Dmidecode系统信息
# dmidecode | less
我們通過?dmidecode 命令可以獲取廠商、產品型號、序列號等、但是?dmidecode 命令輸出的信息太多,我們只需要?System Information 下的?Manufacturer、Product Name、Serial Number?三個信息,并以字典形式輸出。
若沒有?dmidecode 命令,安裝即可:yum install -y dmidecode
代碼如下:
# vim dmi.py#!/usr/bin/env?python
from?subprocess?import?Popen,?PIPE
def?getDmi():
p?=?Popen(['dmidecode'],?stdout=PIPE)
data?=?p.stdout.read()
return?data
def?parseDmi(data):
lines?=?[]
line_in?=?False
dmi_list?=?[i?for?i?in?data.split('\n')?if?i]
for?line?in?dmi_list:
if?line.startswith('System?Information'):
line_in?=?True
continue
if?line_in:
if?not?line[0].strip():
lines.append(line)
else:
break
return?lines
def?dmiDic():
dmi_dic?=?{}
data?=?getDmi()
lines?=?parseDmi(data)
dic?=?dict([i.strip().split(':?')?for?i?in?lines])
dmi_dic['vendor']?=?dic['Manufacturer']
dmi_dic['product']?=?dic['Product?Name']
dmi_dic['sn']?=?dic['Serial?Number']
return?dmi_dic
if?__name__?==?'__main__':
print?dmiDic()
代碼說明:
dmi_list = [i for i in data.split('\n') if i]
是以 \n 對字符串進行切割,保存為一個列表。但是空行就會被切割成為了一個空字符串,if i 則起到去除空字符串效果,因為空字符串為False,只有為True才會被保存到列表中。
if not line[0].strip():
這是因為?System Information 下一行都是以 tab(\t)開頭的,strip函數是去除字符串前后的空格或者tab,line[0].strip()則是對第一個字符執行strip,若該字符為空格或者tab,則會被去除,形成一個空字符,而空字符的類型為False,not line[0].strip()則為True。
執行結果如下:
總結
以上是生活随笔為你收集整理的php执行dmidecode,Python:Dmidecode系统信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php phpunit selenium
- 下一篇: oracle rcu 安装,Oracle