您好,登錄后才能下訂單哦!
獲取信息如下:
主機名
系統(tǒng)版本
系統(tǒng)內(nèi)核版本
總內(nèi)存
CPU生廠商
CPU總核心數(shù)
服務(wù)器生廠商
服務(wù)器序列號
各網(wǎng)卡IP,MAC和網(wǎng)卡名信息
實現(xiàn)代碼如下:
#!/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 #獲取操作系統(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型號統(tǒng)計的為最后一種型號,這種情況少見 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ù)需要用兩個變量來接收參數(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ù)需要使用兩個變量接收參數(shù) #獲取網(wǎng)卡信息,包括網(wǎng)卡名,IP地址,MAC地址 def ipaddrinfo(): #定義存儲格式,以網(wǎng)卡名為key,mac地址和ip地址為一個列表,這個列表又為這網(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" %("主機名", 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ù)器序列號", 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測試沒有問題,其它系統(tǒng)使用可能會出現(xiàn)一些IO錯誤
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。