python相关linux_Python实现获取Linux系统基本信息
Python實(shí)現(xiàn)獲取Linux系統(tǒng)基本信息,獲取信息如下:
主機(jī)名
系統(tǒng)版本
系統(tǒng)內(nèi)核版本
總內(nèi)存
CPU生廠商
CPU總核心數(shù)
服務(wù)器生廠商
服務(wù)器序列號(hào)
各網(wǎng)卡IP,MAC和網(wǎng)卡名信息
實(shí)現(xiàn)代碼如下:
#!/usr/bin/python
#coding:utf8
from subprocess import Popen, PIPE
import re
#獲取主機(jī)名,也可以使用 uname -n 命令獲取
def hostname():
hostname = Popen(["hostname"], stdout=PIPE)
hostname = hostname.stdout.read()
return hostname
#獲取操作系統(tǒng)版本
def osversion():
with open("/etc/RedHat-release") as f:
osversion = f.read()
return osversion
#獲取操作系統(tǒng)內(nèi)核版本
def oscoreversion():
oscoreversion = Popen(["uname", "-r"], stdout=PIPE)
oscoreversion = oscoreversion.stdout.read()
return oscoreversion
#獲取CPU相關(guān)信息,如果存在多種不同CPU,那么CPU型號(hào)統(tǒng)計(jì)的為最后一種型號(hào),這種情況少見
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? ? #調(diào)用此函數(shù)需要用兩個(gè)變量來接收參數(shù)
#獲取內(nèi)存相關(guān)信息
def meminfo():
with open("/proc/meminfo") as meminfo:
for i in meminfo:
if i.startswith("MemTotal"):
totalmem = i.split(":")[1]
return totalmem
#獲取服務(wù)器硬件相關(guān)信息
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 #調(diào)用此函數(shù)需要使用兩個(gè)變量接收參數(shù)
#獲取網(wǎng)卡信息,包括網(wǎng)卡名,IP地址,MAC地址
def ipaddrinfo():
#定義存儲(chǔ)格式,以網(wǎng)卡名為key,mac地址和ip地址為一個(gè)列表,這個(gè)列表又為這網(wǎng)卡名的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" %("主機(jī)名", hostname)),
print("%s:\t %s" %("系統(tǒng)版本", osversion)),
print("%s:\t %s" %("系統(tǒng)內(nèi)核版本", oscoreversion)),
print("%s:\t %s" %("總內(nèi)存", totalmem)),
print("%s:\t%s" %("CPU生廠商", cpumode)),
print("%s:\t %s" %("CPU總核心數(shù)", len(cpunumber)))
print("%s:\t%s" %("服務(wù)器生廠商", manufacturer)),
print("%s:\t%s" %("服務(wù)器序列號(hào)", serialnumber)),
for x in ipinfo:
y = ipinfo.get(x)
ip = y[1]
mac = y[0]
print("%s%s:\t %s\t%s" %("網(wǎng)卡", x, ip, mac))
輸出結(jié)果如下:
以上結(jié)果經(jīng)CentOS 7和CentOS 6測(cè)試沒有問題,其它系統(tǒng)使用可能會(huì)出現(xiàn)一些IO錯(cuò)誤
總結(jié)
以上是生活随笔為你收集整理的python相关linux_Python实现获取Linux系统基本信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拍拍贷提前还款还可以借款吗
- 下一篇: 什么保险可以报销生育