使用 python **收集主機的系統資訊,主要:主機名稱、ip、系統版本、伺服器廠商、型號、序列號、cpu資訊、記憶體等系統資訊。
#!/usr/bin/env python
#encoding: utf-8
'''
收集主機的資訊:
主機名稱、ip、系統版本、伺服器廠商、型號、序列號、cpu資訊、記憶體資訊
'''from
subprocess
import
popen, pipe
import
os,sys
''' 獲取 ifconfig 命令的輸出 '''
defgetifconfig
():
p = popen([
'ifconfig'
], stdout = pipe)
data = p.stdout.read()
return
data
''' 獲取 dmidecode 命令的輸出 '''
defgetdmi
():
p = popen([
'dmidecode'
], stdout = pipe)
data = p.stdout.read()
return
data
''' 根據空行分段落 返回段落列表'''
defparsedata
(data):
parsed_data =
new_line =''
data = [i
fori
indata.split(
'\n')if
i] forline
indata: if
line[
0].strip():
new_line = line +
'\n'
else:
new_line += line +
'\n'
return
[i foriin
parsed_data
ifi]
''' 根據輸入的段落資料分析出ifconfig的每個網絡卡ip資訊 '''
defparseifconfig
(parsed_data):
dic = {}
parsed_data = [i
fori
inparsed_data
ifnot
i.startswith(
'lo')]
forlines
inparsed_data:
line_list = lines.split(
'\n')
devname = line_list[
0].split()[0]
macaddr = line_list[
0].split()[-1]
ipaddr = line_list[
1].split()[
1].split(
':')[1]
break
dic[
'ip'
] = ipaddr
return
dic
''' 根據輸入的dmi段落資料 分析出指定引數 '''
defparsedmi
(parsed_data):
dic = {}
parsed_data = [i
fori
inparsed_data
ifi.startswith(
'system information')]
parsed_data = [i
fori
inparsed_data[
0].split(
'\n')[1
:]ifi]
dmi_dic = dict([i.strip().split(
':')
fori
inparsed_data])
dic[
'vender'
] = dmi_dic[
'manufacturer'
].strip()
dic[
'product'
] = dmi_dic[
'product name'
].strip()
dic[
'sn'
] = dmi_dic[
'serial number'
].strip()
return
dic
''' 獲取linux系統主機名稱 '''
defgethostname
():
with
open(
'/etc/sysconfig/network')as
fd:
forline
infd: if
line.startswith(
'hostname'):
hostname = line.split(
'=')[
1].strip()
break
return
''' 獲取linux系統的版本資訊 '''
defgetosversion
():
with
open(
'/etc/issue')as
fd:
forline
infd:
osver = line.strip()
break
return
''' 獲取cpu的型號和cpu的核心數 '''
defgetcpu
():
num =0
with
open(
'/proc/cpuinfo')as
fd:
forline
infd: if
line.startswith(
'processor'):
num +=1
ifline.startswith(
'model name'):
cpu_model = line.split(
':')[
1].strip().split()
cpu_model = cpu_model[
0] +
' '+ cpu_model[
2] +
' '+ cpu_model[-1]
return
''' 獲取linux系統的總物理記憶體 '''
defgetmemory
():
with
open(
'/proc/meminfo')as
fd:
forline
infd: if
line.startswith(
'memtotal'):
mem = int(line.split()[
1].strip())
break
mem =
'%.f'
% (mem /
1024.0
) +' mb'
return if
__name__ ==
'__main__':
dic = {}
data_ip = getifconfig()
parsed_data_ip = parsedata(data_ip)
ip = parseifconfig(parsed_data_ip)
data_dmi = getdmi()
parsed_data_dmi = parsedata(data_dmi)
dmi = parsedmi(parsed_data_dmi)
hostname = gethostname()
osver = getosversion()
cpu = getcpu()
mem = getmemory()
dic.update(ip)
dic.update(dmi)
dic.update(hostname)
dic.update(osver)
dic.update(cpu)
dic.update(mem)
''' 將獲取到的所有資料資訊並按簡單格式對齊顯示 '''
fork,v
indic.items():
'%-10s:%s'
% (k, v)
Android Log日誌AS使用及Linux輸出
1 log.v tag,列印那些最為瑣碎的,意義最小的日誌資訊。對應級別verbose,是android 日誌裡面級別最低的一種。2 log.d tag,列印一些除錯資訊,這些資訊對你除錯程式和分析問題應該是有幫助的。對應級別debug,比 verbose 高一級。3 log.i tag,列印一些比...
windows使用ubuntu啟動linux服務
有些服務只能在linux中策馬奔騰,但是公司配置windows電腦,因此在windows中安裝ubuntu服務,再在啟動的ubuntu中啟動linux服務 系統 win10 其他系統沒試過 安裝步驟 1.檢查 網路和internet是否開啟 應該關閉 伺服器,否則無法開啟windows商店 2.在w...
windows使用ubuntu啟動linux服務
有些服務只能在linux中策馬奔騰,但是公司配置windows電腦,因此在windows中安裝ubuntu服務,再在啟動的ubuntu中啟動linux服務 系統 win10 其他系統沒試過 安裝步驟 1.檢查 網路和internet是否開啟 應該關閉 伺服器,否則無法開啟windows商店 2.在w...