Python实现获取Linux操作系统基础信息
admin
2023-03-19 15:41:31
0

获取信息如下:

    主机名

    系统版本

    系统内核版本

    总内存

    CPU生厂商

    CPU总核心数

    服务器生厂商

    服务器序列号

    各网卡IP,MAC和网卡名信息


实现代码如下:


#!/usr/bin/python
#coding:utf8

from subprocess import Popen, PIPE
import re

#获取主机名,也可以使用 uname -n 命令获取
def hostname():
    hostname = Popen(["hostname"], stdout=PIPE)
    hostname = hostname.stdout.read()
    return hostname

#获取操作系统版本
def osversion():
    with open("/etc/redhat-release") as f:
        osversion = f.read()
    return osversion

#获取操作系统内核版本
def oscoreversion():
    oscoreversion = Popen(["uname", "-r"], stdout=PIPE)
    oscoreversion = oscoreversion.stdout.read()
    return oscoreversion

#获取CPU相关信息,如果存在多种不同CPU,那么CPU型号统计的为最后一种型号,这种情况少见
def cpuinfo():
    corenumber = []
    with open("/proc/cpuinfo") as cpuinfo:
        for i in cpuinfo:
            if i.startswith("processor"):
                corenumber.append(i)
            if i.startswith("model name"):
                cpumode = i.split(":")[1]
    return corenumber, cpumode	#调用此函数需要用两个变量来接收参数
    
#获取内存相关信息
def meminfo():
    with open("/proc/meminfo") as meminfo:
        for i in meminfo:
            if i.startswith("MemTotal"):
                totalmem = i.split(":")[1]
    return totalmem

#获取服务器硬件相关信息
def biosinfo():
    biosinfo = Popen(["dmidecode", "-t", "system"], stdout=PIPE)
    biosinfo = biosinfo.stdout.readlines()
    
    for i in biosinfo:
        if "Manufacturer" in i:
            manufacturer = i.split(":")[1]
        if "Serial Number" in i:
            serialnumber = i.split(":")[1]
    return manufacturer, serialnumber	#调用此函数需要使用两个变量接收参数
    
#获取网卡信息,包括网卡名,IP地址,MAC地址
def ipaddrinfo():

    #定义存储格式,以网卡名为key,mac地址和ip地址为一个列表,这个列表又为这网卡名的value
    def add(dic, key, value): 
        dic.setdefault(key, [ ]).append(value)
    
    ipinfo = Popen(["ip", "addr"], stdout=PIPE)
    ipinfo = ipinfo.stdout.readlines()
    
    dict1 = {}
    for i in ipinfo:
        if re.search(r"^\d", i):
            devname = i.split(": ")[1]
            continue
        if re.findall("ether", i):
            devmac = i.split()[1]
            add(dict1, devname, devmac)
            continue
        if re.findall("global", i):
            devip = i.split()[1]
            add(dict1, devname, devip)
            continue
    return dict1
    
if __name__ == "__main__":
    hostname = hostname()
    osversion = osversion()
    oscoreversion = oscoreversion()
    totalmem = meminfo()
    cpunumber, cpumode = cpuinfo() 
    manufacturer, serialnumber = biosinfo()
    ipinfo = ipaddrinfo()
    print("%s:\t\t %s" %("主机名", hostname)),
    print("%s:\t %s" %("系统版本", osversion)),
    print("%s:\t %s" %("系统内核版本", oscoreversion)),
    print("%s:\t %s" %("总内存", totalmem)),
    print("%s:\t%s" %("CPU生厂商", cpumode)),
    print("%s:\t %s" %("CPU总核心数", len(cpunumber)))
    print("%s:\t%s" %("服务器生厂商", manufacturer)),
    print("%s:\t%s" %("服务器序列号", serialnumber)),
    for x in ipinfo:
        y = ipinfo.get(x)
        ip = y[1]
        mac = y[0]
        print("%s%s:\t %s\t%s" %("网卡", x, ip, mac))



输出结果如下:


Python实现获取Linux操作系统基础信息

Python实现获取Linux操作系统基础信息


以上结果经CentOS 7和CentOS 6测试没有问题,其它系统使用可能会出现一些IO错误

相关内容

热门资讯

拒不付款,还对监控嚣张“比耶” 近日,广东梅州丰顺县一名男子加油逃单后,同行人对监控嚣张“比耶”。今天(5月10日),南都N视频记者...
演员张静初,面临被起诉 近日,多位在演员张静初直播间购买过“优思益”产品的网友表示,目前仍未拿到退款,陷入退货无门的境地。5...
90分钟16条,特朗普的社媒账... 周六下午,特朗普将他的Truth Social账号变成了“AI垃圾工厂”,在短短90分钟内发布了16...
我,22岁,确诊为“妈” 又是一年母亲节。每年今天,大家都试图再次看见母亲,讨论她们的付出与局限,以“成为母亲”为界限,划分她...
重达11000克拉!缅甸发现“... 【环球网报道】美国哥伦比亚广播公司、英国天空新闻网等媒体援引缅甸官方媒体8日消息报道称,缅甸发现一块...
玻璃缝隙漏水怎么处理 1、检查窗户玻璃附近墙体的防水层,重新做防水层。2、查找原先的密封物,检查门窗与墙体的密封度,如果密...
热水器侧面的缝隙漏水可以修好吗 问题:热水器侧面的缝隙漏水可以修好吗回答:如果热水器侧面出现缝隙漏水的情况基本上都是可以修好的。首先...
洗面盆和台面缝隙漏水怎么办 洗菜盆漏水的修补方法1、如果是洗菜盆和台面衔接松动:如果是因为洗菜盆安装时没安装好,与台面缝隙过大,...
空调缝隙漏水怎么办 空调在一定的年限服务后,会出现一些问题,例如漏水。空调漏水是比较常见的问题,但有许多原因可能导致空调...
不用电的情况下空气开关跳闸是怎... 家用空气断路器跳闸的原因很好判断,如果漏电断路器脱扣后复位按钮突出,则可以断定电路有漏电,需要注意的...