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

本文介绍了如何使用Python脚本来获取Linux操作系统的主机名、系统版本、内核版本、总内存、CPU信息、服务器制造商及序列号以及网络接口的IP、MAC和网卡名称。通过读取系统文件和使用特定命令,实现了全面的系统信息获取。
摘要由CSDN通过智能技术生成

获取信息如下:

主机名

系统版本

系统内核版本

总内存

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))

输出结果如下:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值