python收集linux主機資訊,需要安裝dmidecode命令,yum -y install dmidecode#!/usr/bin/env python
# coding=utf-8
from subprocess import popen, pipe
#獲取ifconfig命令資訊
def getifconfig():
p = popen([『ifconfig『], stdout=pipe)
data = p.stdout.read().decode()
return data
#獲取dmidecode命令資訊
def getdmi():
p = popen([『dmidecode『], stdout=pipe)
data = p.stdout.read().decode()
return data
#處理data資料輸出為list並去掉空
def parsedata(data):
parsed_data =
new_line = 『『
data = [i for i in data.split(『\n『) if i]
for line in data:
if line[0].strip():
new_line = line + 『\n『
else:
new_line += line + 『\n『
return [i for i in parsed_data if i]
#處理ifconfig資料並獲取eth1的ip位址
def parseifocnfig(parsed_data):
dic = {}
parsed_data = [ i for i in parsed_data if i.startswith(『eth1『)]
for lines in parsed_data:
line_list = lines.split(『\n『)
devname = line_list[0].split()[0]
macaddr = line_list[2].split()[1]
ipaddr = line_list[1].split()[1]
break
dic[『ip『] = ipaddr
return dic
#處理dmidecode資料獲取資訊
def paesedmi(parsed_data):
dic = {}
parsed_data = [ i for i in parsed_data if i.startswith(『system information『)]
parsed_data = [i for i in parsed_data[0].split(『\n『)[1:] if i]
dmi_dic = dict([i.strip().split(『: 『) for i in parsed_data])
dic[『vender『] = dmi_dic[『manufacturer『]
dic[『product『] = dmi_dic[『product name『]
dic[『sn『] = dmi_dic[『serial number『][:8]
return dic
#獲取hostname
def gethostname(f):
with open(f) as fd:
for line in fd:
if line.startswith(『hostname『):
hostname = line.split(『=『)[1].strip()
break
return
#獲取作業系統
def getosver(f):
with open(f) as fd:
for line in fd:
osver = line.strip()
break
return
#獲取cpu數
def getcpu(f):
num = 0
with open(f) as fd:
for line in fd:
if line.startswith(『processor『):
num += 1
if line.startswith(『model name『):
cpu_model = line.split(『:『)[1].split()
cpu_model = cpu_model[0]+『 『+ cpu_model[3]+『 『+ cpu_model[-1]
return
#獲取記憶體大小
def getmemory(f):
with open(f) as fd:
for line in fd:
if line.startswith(『memtotal『):
mem = int(line.split()[1].strip())
break
mem = "%s" % int((mem/1024.0))+『m『
return
def main():
dic = {}
ip = parseifocnfig(parsedata(getifconfig()))
dmi = paesedmi(parsedata(getdmi()))
osver = getosver(『/etc/issue『)
hostname = gethostname(『/etc/sysconfig/network『)
cpu = getcpu(『/proc/cpuinfo『)
memory = getmemory(『/proc/meminfo『)
# lines = [ip, dmi, hostname, osver, cpu, memory]
# for i in lines:
# dic.update(i)
dic.update(ip)
dic.update(dmi)
dic.update(hostname)
dic.update(osver)
dic.update(cpu)
dic.update(memory)
print(dic)
if __name__ == 『__main__『:
main()
原文:
Python 收集系統資訊
收集主機的以下資訊,並以字典形式輸出。1 主機名 hostname 3 作業系統版本 osver 4 伺服器廠商 vendor 5 伺服器型號 product 6 伺服器序列號 sn 7 cpu型號 cpu model 8 cpu核數 cpu num 9 記憶體大小 memory 如下 vim co...
python常見報錯收集
1 error non utf 8 code starting with xbf in file 這是檔案編碼問題,在檔案的最上方加上注釋 encoding gbk.2 關於from,import的區別 引用大神的解釋 from import 從包裡把鑰匙拿出來,給我 import 把包給我 3.u...
Python不定參(收集引數 )
收集引數 不定參 的逆過程 不定參 可接受數量不固定的引數,擁有擴充套件的能力。對於那些傳入引數的數量不確定的程式有很重要的作用,但同時由於不定參可同時接受很多引數,這也帶來了隱患 引數不合法。要解決這個問題就需要使用斷言 assert 或者 try except 來增加對引數合法性的檢驗及引數不合...