Python收集主机信息

2017-01-09 14:10:35来源:http://xtbao.blog.51cto.com/7482722/1889779作者:笑傲博客人点击


Python收集linux主机信息,需要安装dmidecode命令,yum -y installdmidecode

#!/usr/bin/envpython
#coding=utf-8

fromsubprocessimportPopen,PIPE

#获取ifconfig命令信息
defgetIfconfig():
p=Popen(['ifconfig'],stdout=PIPE)
data=p.stdout.read().decode()
returndata

#获取dmidecode命令信息
defgetDmi():
p=Popen(['dmidecode'],stdout=PIPE)
data=p.stdout.read().decode()
returndata

#处理data数据输出为list并去掉空
defparseData(data):
parsed_data=[]
new_line=''
data=[iforiindata.split('/n')ifi]
forlineindata:
ifline[0].strip():
parsed_data.append(new_line)
new_line=line+'/n'
else:
new_line+=line+'/n'
parsed_data.append(new_line)
return[iforiinparsed_dataifi]

#处理ifconfig数据并获取eth1的IP地址
defparseIfocnfig(parsed_data):
dic={}
parsed_data=[iforiinparsed_dataifi.startswith('eth1')]
forlinesinparsed_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
returndic

#处理dmidecode数据获取信息
defpaeseDmi(parsed_data):
dic={}
parsed_data=[iforiinparsed_dataifi.startswith('SystemInformation')]
parsed_data=[iforiinparsed_data[0].split('/n')[1:]ifi]
dmi_dic=dict([i.strip().split(':')foriinparsed_data])
dic['vender']=dmi_dic['Manufacturer']
dic['product']=dmi_dic['ProductName']
dic['sn']=dmi_dic['SerialNumber'][:8]
returndic

#获取hostname
defgetHostname(f):
withopen(f)asfd:
forlineinfd:
ifline.startswith('HOSTNAME'):
hostname=line.split('=')[1].strip()
break
return{'hostname':hostname}

#获取操作系统
defgetOSver(f):
withopen(f)asfd:
forlineinfd:
osver=line.strip()
break
return{'osver':osver}

#获取CPU数
defgetCpu(f):
num=0
withopen(f)asfd:
forlineinfd:
ifline.startswith('processor'):
num+=1
ifline.startswith('modelname'):
cpu_model=line.split(':')[1].split()
cpu_model=cpu_model[0]+''+cpu_model[3]+''+cpu_model[-1]
return{'cpu_num':num,'cpu_model':cpu_model}

#获取内存大小
defgetMemory(f):
withopen(f)asfd:
forlineinfd:
ifline.startswith('MemTotal'):
mem=int(line.split()[1].strip())
break
mem="%s"%int((mem/1024.0))+'M'
return{'memory':mem}

defmain():
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]
#foriinlines:
#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()

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台