收集主机信息:
主机名
ip
操作系统版本osver
服务器厂商vendor
服务器型号:product
服务器序列号:sn
CPU型号:cpu_model
CPU核数:cpu_num
内存大小:Memory
1 #!/usr/bin/env python 2 3 from subprocess import Popen,PIPE 4 5 def getIfconfig(): 6 p = Popen([\'ifconfig\'],stdout=PIPE) 7 data = p.stdout.read() 8 return data 9 10 def getDmi(): 11 p = Popen([\'dmidecode\'],stdout=PIPE) 12 data = p.stdout.read() 13 return data 14 15 def parseData(data): 16 parsed_data = [] 17 new_line = \'\' 18 data = [i for i in data.split(\'\n\') if i] 19 for line in data: 20 if line[0].strip(): 21 parsed_data.append(new_line) 22 new_line = line +\'\n\' 23 else: 24 new_line += line+\'\n\' 25 parsed_data.append(new_line) 26 return [i for i in parsed_data if i] 27 28 def parseIfconfig(parsed_data): 29 parsed_data = [i for i in parsed_data if not i.startswith(\'lo\')] 30 for lines in parsed_data: 31 line_list = lines.split(\'\n\') 32 devname = line_list[0].split()[0] 33 macaddr = line_list[0].split()[-1] 34 ipaddr = line_list[1].split()[1].split(\':\')[1] 35 break 36 dic[\'ip\'] =ipaddr 37 return dic 38 39 def parseDmi(parsed_data): 40 dic = {} 41 parsed_data = [i for i in parsed_data if i.startswith(\'System Information\')] 42 parsed_data = [i for i in parsed_data[0].split(\'\n\')[1:] if i] 43 dmi_dic = dict([i.strip().split(\':\') for i in parsed_data]) 44 dic[\'vendor\'] = dmi_dic[\'Manufacturer\'] 45 return dmi_dic 46 47 def getHostname(f): 48 with open(f) as fd: 49 for line in fd: 50 if line.startswith(\'HOSTNAME\'): 51 hostname = line.split(\'=\')[1].strip() 52 break 53 return {\'hostname\':hostname} 54 55 def getOsver(f): 56 with open(f) as fd: 57 for line in fd: 58 osver = line.split() 59 break 60 return {\'osver\':osver} 61 62 def getCpu(f): 63 num = 0 64 with open(f) as fd: 65 for line in fd: 66 if line.startswith(\'processor\'): 67 num +=1 68 if line.startswith(\'model name\'): 69 cpu_model = line.split(\':\')[1].split() 70 cpu_model = cpu_model[0]+\' \'+cpu_model[-1] 71 return {\'cpu_num\':num,\'cpu_model\':cpu_model} 72 73 def getMemory(f): 74 with open(f) as fd: 75 for line in fd: 76 if line.startswith(\'MemTotal\'): 77 mem = int(line.split()[1].strip()) 78 break 79 mem = "%d" % int(mem/1024.0)+\'M\' 80 return {\'Memory\':mem} 81 82 83 if __name__ == \'__main__\': 84 dic = {} 85 data_ip = getIfconfig() 86 parsed_data_ip = parseData(data_ip) 87 ip = parseIfconfig(parsed_data_ip) 88 data_dmi = getDmi() 89 parsed_data_dmi = parseData(data_dmi) 90 dmi = parseDmi(parsed_data_dmi) 91 hostname = getHostname(\'/etc/sysconfig/network\') 92 osver = getOsver(\'/etc/issue\') 93 cpu = getCpu(\'/proc/cpuinfo\') 94 mem = getMemory(\'/proc/meminfo\') 95 dic.update(ip) 96 dic.update(dmi) 97 dic.update(hostname) 98 dic.update(osver) 99 dic.update(cpu) 100 dic.update(mem) 101 print dic