使用 python 收集获取 Linux 系统主机信息
发布时间:2021-05-21 05:10:16 所属栏目:大数据 来源: https://www.jb51.cc
导读:使用 python 代码收集主机的系统信息,主要:主机名称、IP、系统版本、服务器厂商、型号、序列号、cpu信息、内存等系统信息。 # !/usr/bin/env python # encoding: utf-8 ''' 收集主机的信息:主机名称、IP、系统版本、服务器厂商、型号、序列号、cpu信息、
使用 python 代码收集主机的系统信息,主要:主机名称、IP、系统版本、服务器厂商、型号、序列号、cpu信息、内存等系统信息。 #!/usr/bin/env python #encoding: utf-8 ''' 收集主机的信息: 主机名称、IP、系统版本、服务器厂商、型号、序列号、cpu信息、内存信息 ''' from subprocess import Popen,PIPE os,sys 获取 ifconfig 命令的输出 ''' def getIfconfig(): p = Popen(['ifconfig'],stdout = PIPE) data = p.stdout.read() return data 获取 dmidecode 命令的输出 getDmi(): p = Popen([dmidecode 根据空行分段落 返回段落列表 parseData(data): parsed_data = [] new_line = '' data = [i for i in data.split(n') if i] for line in data: line[0].strip(): parsed_data.append(new_line) new_line = line + ' else: new_line += line + ' parsed_data.append(new_line) return [i in parsed_data i] 根据输入的段落数据分析出ifconfig的每个网卡ip信息 parseIfconfig(parsed_data): dic = {} parsed_data = [i if not i.startswith(lo)] for lines parsed_data: line_list = lines.split() devname = line_list[0].split()[0] macaddr = line_list[0].split()[-1] ipaddr = line_list[1].split()[1].split(:')[1] break dic[ip'] = ipaddr dic 根据输入的dmi段落数据 分析出指定参数 parseDmi(parsed_data): dic =if i.startswith(System Information)] parsed_data = [i in parsed_data[0].split(')[1:] i] dmi_dic = dict([i.strip().split( parsed_data]) dic[vender'] = dmi_dic[Manufacturer].strip() dic[productProduct NamesnSerial Number].strip() 获取Linux系统主机名称 getHostname(): with open(/etc/sysconfig/network) as fd: fd: if line.startswith(HOSTNAME): hostname = line.split(=].strip() break return {hostname:hostname} 获取Linux系统的版本信息 getOsVersion(): with open(/etc/issue fd: osver = line.strip() osver:osver} 获取cpu的型号和cpu的核心数 getcpu(): num = 0 with open(/proc/cpuinfoprocessor): num += 1 model name): cpu_model = line.split(].strip().split() cpu_model = cpu_model[0] + ' ' + cpu_model[2] + ' + cpu_model[-1] cpu_num':num,cpu_model:cpu_model} 获取Linux系统的总物理内存 getMemory(): with open(/proc/meminfoMemTotal): mem = int(line.split()[1].strip()) mem = %.f' % (mem / 1024.0) + MB' Memory:mem} 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) 将获取到的所有数据信息并按简单格式对齐显示 ''' for k,v dic.items(): print %-10s:%s' % (k,v) ? 实验测试结果: product :VMware Virtual Platform osver :CentOS release 6.4 (Final) sn :VMware-56 4d b4 6c 05 e5 20 dc-c6 49 0c e1 e0 18 1c 75 Memory :1870 MB cpu_num :2 ip :192.168.0.8 vender :VMware,Inc. hostname :vip cpu_model :Intel(R) i7-4710MQ 2.50GHz ? (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |