日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發布時間:2024/9/27 linux 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python相关linux_Python实现获取Linux系统基本信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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系统基本信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。