#!/usr/bin/python
#coding=utf-8
from subprocess import Popen, PIPE

def getIfconfig():
    p = Popen(['ifconfig'], stdout = PIPE)
    data = p.stdout.read()
    return data

def getDmi():
    p = Popen(['dmidecode'], stdout = PIPE)
    data = p.stdout.read()
    return data

def parseData(data):
    parsed_data = []
    new_line = ''
    data = [i  for i in data.split('\n') if i]
#    print data
    for line in data:
	if line[0].strip():    #判断列表中的字符串，在原文件中是否顶格,每遇顶格就将new_line存入列表
            parsed_data.append(new_line)
	    new_line = line + '\n'
	else:
	    new_line += line + '\n'
    parsed_data.append(new_line)
    return [i for i in parsed_data if i]

def parseIfconfig(parsed_data):
    dic = {}
    parsed_data = [i for i in parsed_data if not i.startswith('lo')]
    for lines in parsed_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

def parseDmi(parsed_data):
    dic = {}
    parsed_data = [i for i in parsed_data if i.startswith('System Information')]
#return parsed_data
    parsed_data = parsed_data[0].split('\n\t')[1:]
    dmi_dic =  dict([i.split(':') for i in parsed_data])
    dic['vender'] = dmi_dic['Manufacturer'].strip()
    dic['product'] = dmi_dic['Product Name'].strip()
    dic['sn'] = dmi_dic['Serial Number'].strip()
    return dic

def getHostname(f):
    with open(f) as fd:
	for line in fd:
#	    if line.startswith('HOSTNAME'):
#		hostname = line.split('=').strip()
	    hostname = line
	    break
    return {'hostname': hostname}

def getOsver(f):
    with open(f) as fd:
	for line in fd:
	    osver = line.strip()
	    break
    return {'osver': osver}

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[-1]
    return {'cpu_num': num, 'cpu_model': cpu_model}

def getMem(f):
    with open(f) as fd:
	for line in fd:
	    if line.startswith('MemTotal'):
		mem = int(line.split(':')[1].split()[0])
		break
    mem = '%s' % (mem / 1024.0) + 'M'
    return {'memory': mem}

    
if __name__ == "__main__":
    dic = {}
    data_ip = getIfconfig()
    parse_data_ip = parseData(data_ip)
    ip =  parseIfconfig(parse_data_ip)
    data_dmi = getDmi()
    parsed_data_dmi = parseData(data_dmi)
    dmi = parseDmi(parsed_data_dmi)
    hostname = getHostname('/etc/hostname')
    osver = getOsver('/etc/issue')
    cpu = getCpu('/proc/cpuinfo')
    mem = getMem('/proc/meminfo')
    dic.update(ip)
    dic.update(dmi)
    dic.update(hostname)
    dic.update(osver)
    dic.update(cpu)
    dic.update(mem)	
    print dic

9b1f9f71ee0bd27ff7e36aea6e0dbc7e4c4d762d
#!/usr/bin/python
#coding=utf-8
from subprocess import Popen, PIPE

def getIfconfig():
    p = Popen(['ifconfig'], stdout = PIPE)
    data = p.stdout.read()
    return data

def getDmi():
    p = Popen(['dmidecode'], stdout = PIPE)
    data = p.stdout.read()
    return data

def parseData(data):
    parsed_data = []
    new_line = ''
    data = [i  for i in data.split('\n') if i]
#    print data
    for line in data:
	if line[0].strip():    #判断列表中的字符串，在原文件中是否顶格,每遇顶格就将new_line存入列表
            parsed_data.append(new_line)
	    new_line = line + '\n'
	else:
	    new_line += line + '\n'
    parsed_data.append(new_line)
    return [i for i in parsed_data if i]

def parseIfconfig(parsed_data):
    dic = {}
    parsed_data = [i for i in parsed_data if not i.startswith('lo')]
    for lines in parsed_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

def parseDmi(parsed_data):
    dic = {}
    parsed_data = [i for i in parsed_data if i.startswith('System Information')]
#return parsed_data
    parsed_data = parsed_data[0].split('\n\t')[1:]
    dmi_dic =  dict([i.split(':') for i in parsed_data])
    dic['vender'] = dmi_dic['Manufacturer'].strip()
    dic['product'] = dmi_dic['Product Name'].strip()
    dic['sn'] = dmi_dic['Serial Number'].strip()
    return dic

def getHostname(f):
    with open(f) as fd:
	for line in fd:
#	    if line.startswith('HOSTNAME'):
#		hostname = line.split('=').strip()
	    hostname = line
	    break
    return {'hostname': hostname}

def getOsver(f):
    with open(f) as fd:
	for line in fd:
	    osver = line.strip()
	    break
    return {'osver': osver}

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[-1]
    return {'cpu_num': num, 'cpu_model': cpu_model}

def getMem(f):
    with open(f) as fd:
	for line in fd:
	    if line.startswith('MemTotal'):
		mem = int(line.split(':')[1].split()[0])
		break
    mem = '%s' % (mem / 1024.0) + 'M'
    return {'memory': mem}

    
if __name__ == "__main__":
    dic = {}
    data_ip = getIfconfig()
    parse_data_ip = parseData(data_ip)
    ip =  parseIfconfig(parse_data_ip)
    data_dmi = getDmi()
    parsed_data_dmi = parseData(data_dmi)
    dmi = parseDmi(parsed_data_dmi)
    hostname = getHostname('/etc/hostname')
    osver = getOsver('/etc/issue')
    cpu = getCpu('/proc/cpuinfo')
    mem = getMem('/proc/meminfo')
    dic.update(ip)
    dic.update(dmi)
    dic.update(hostname)
    dic.update(osver)
    dic.update(cpu)
    dic.update(mem)	
    print dic
