Python实现获取Linux系统基本信息,获取信息如下:

主机名

系统版本

系统内核版本

总内存

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错误

python相关linux_Python实现获取Linux系统基本信息相关推荐

  1. 使用Python获取Linux系统的各种信息

    From: http://www.jb51.net/article/52058.htm 这篇文章主要介绍了使用Python获取Linux系统的各种信息,例如系统类型.CPU信息.内存信息.块设备等,需 ...

  2. 查看Linux系统基本信息CPU内存系统负载

    查看Linux系统基本信息 1.查看Linux系统uuid [root@localhost ~]# cat /sys/class/dmi/id/product_uuid A6E64D56-8D4F-1 ...

  3. 验证:获取linux系统的网卡信息

    有时候,总想验证一些奇怪的想法,干脆就写下来,以备后查. 想法:获取linux系统的网卡信息(1)网卡名称 (2)IPv4 (3)IPv6 (4)MAC地址 (5)是否回环地址 (6)是否物理网卡 ( ...

  4. zabbix5.0 High swap space usage ( less than 50% free)解决步骤。相关小知识:linux系统mem和swap的关系

    zabbix5.0 系统报错High swap space usage ( less than 50% free) 一,执行free -m,看看目前内存是多少 total        used   ...

  5. 获取 Linux 系统所有网卡信息

    功能介绍 获取 Linux 系统网卡数量(包括环回) 遍历每张网卡 打印网卡的 名称.MAC 地址.IP 地址.广播地址.子网掩码 源码 interface_info.c #include <s ...

  6. python项目打包部署到linux系统_把python项目打包到linux执行-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 webpack 打包 node. ...

  7. c++高性能服务器开发01-环境搭建,相关基础概念,Linux系统相关函数

    1.安装Ubuntu18 openssh-server net-tools pwd ls vscode 插件:remote c++ 配置公钥 windows 公钥复制到Linux的./ssh/auth ...

  8. 获取linux系统序列号

    项目中需要获取服务器系统序列号,方法如下: /*** Method for get Linux Machine MotherBoard Serial Number** @return*/public ...

  9. 通过sysinfo获取Linux系统状态信息

      系统运行状态信息是我们关注的重点,通过当前系统的输出信息,如内存大小.进程数量.运行时间等,以便分析CPU负载.软硬件资源占用情况,确保系统高效和稳定.Linux系统中,提供sysinfo以获取相 ...

最新文章

  1. 【转】Microsoft Graph 桌面应用程序
  2. 现代软件工程 第五章 【团队和流程】练习与讨论
  3. Delta3d动态角色层
  4. TutorialsTeacher 中文系列教程【翻译完成】
  5. 100款违法违规APP下架整改:微店、更美等在列
  6. Redis系列(七)--Sentinel哨兵模式
  7. JavaScript 使用面向对象的技术创建高级 Web 应用程序
  8. ubuntu 禁用透明大页_禁用大内存页面
  9. html的hello,world
  10. Mac 版 QQ 音乐上线离线提示音的方法?
  11. .Net1.x转换为.Net 2.0要注意的几个问题
  12. 1-docker安装
  13. 计算机数据库安全研究目的,浅论计算机数据库安全管理
  14. Laravel SQL查询中first, pluck与lists方法的使用
  15. web前端入门到实战:CSS颜色、背景和剪切
  16. mysql 13位时间戳转时间戳_时间戳换算(13位时间戳转换工具 在线)
  17. 2023最新广西大学计算机电子信息考研复试之计算机网络和软件工程 828数据结构与程序设计上岸冲刺复试宝典(复试版/复试资料)
  18. 深度学习之数据集标注
  19. 详解 input accept属性
  20. 王坚:阿里巴巴为什么会“去IOE”(一) | 《商业价值》杂志

热门文章

  1. c语言前置函数,C语言高级编程-函数前置与后置调用
  2. 开发十年的程序员论:零基础自学Python,学习路径是什么?深思
  3. Web框架之Django_01初识(三大主流web框架、Django安装、Django项目创建方式及其相关配置、Django基础三件套:HttpResponse、render、redirect)
  4. VTK:vtkActor2D用法实战
  5. wxWidgets:wxTextWrapper类用法
  6. wxWidgets:wxMDIChildFrame类用法
  7. wxWidgets:wxAccessible类用法
  8. boost::python::numpy::unary_ufunc相关的测试程序
  9. boost::hana::not_equal用法的测试程序
  10. boost::isomorphism用法的测试程序