使用python收集獲取Linux系統主機資訊
使用 python 程式碼收集主機的系統資訊,主要:主機名稱、IP、系統版本、伺服器廠商、型號、序列號、CPU資訊、記憶體等系統資訊。
#!/usr/bin/env python #encoding: utf-8 ``` 收集主機的資訊: 主機名稱、IP、系統版本、伺服器廠商、型號、序列號、CPU資訊、記憶體資訊 ``` from subprocess import Popen, PIPE import os,sys ``` 獲取 ifconfig 命令的輸出 ``` def getIfconfig(): p = Popen([`ifconfig`], stdout = PIPE) data = p.stdout.read() return data ``` 獲取 dmidecode 命令的輸出 ``` def getDmi(): p = Popen([`dmidecode`], stdout = PIPE) data = p.stdout.read() return data ``` 根據空行分段落 返回段落列表``` def parseData(data): parsed_data = [] new_line = `` data = [i for i in data.split(` `) if i] for line in data: if line[0].strip(): parsed_data.append(new_line) new_line = line + ` ` else: new_line += line + ` ` parsed_data.append(new_line) return [i for i in parsed_data if i] ``` 根據輸入的段落資料分析出ifconfig的每個網路卡ip資訊 ``` def parseIfconfig(parsed_data): dic = {} parsed_data = [i for i in parsed_data if not i.startswith(`lo`)] for lines in parsed_data: line_list = lines.split(` `) devname = line_list[0].split()[0] macaddr = line_list[0].split()[-1] ipaddr = line_list[1].split()[1].split(`:`)[1] break dic[`ip`] = ipaddr return dic ``` 根據輸入的dmi段落資料 分析出指定引數 ``` def parseDmi(parsed_data): dic = {} parsed_data = [i for i in parsed_data if i.startswith(`System Information`)] parsed_data = [i for i in parsed_data[0].split(` `)[1:] if i] dmi_dic = dict([i.strip().split(`:`) for i in parsed_data]) dic[`vender`] = dmi_dic[`Manufacturer`].strip() dic[`product`] = dmi_dic[`Product Name`].strip() dic[`sn`] = dmi_dic[`Serial Number`].strip() return dic ``` 獲取Linux系統主機名稱 ``` def getHostname(): with open(`/etc/sysconfig/network`) as fd: for line in fd: if line.startswith(`HOSTNAME`): hostname = line.split(`=`)[1].strip() break return {`hostname`:hostname} ``` 獲取Linux系統的版本資訊 ``` def getOsVersion(): with open(`/etc/issue`) as fd: for line in fd: osver = line.strip() break return {`osver`:osver} ``` 獲取CPU的型號和CPU的核心數 ``` def getCpu(): num = 0 with open(`/proc/cpuinfo`) as fd: for line in fd: if line.startswith(`processor`): num += 1 if line.startswith(`model name`): cpu_model = line.split(`:`)[1].strip().split() cpu_model = cpu_model[0] + ` ` + cpu_model[2] + ` ` + cpu_model[-1] return {`cpu_num`:num, `cpu_model`:cpu_model} ``` 獲取Linux系統的總實體記憶體 ``` def getMemory(): with open(`/proc/meminfo`) as fd: for line in fd: if line.startswith(`MemTotal`): mem = int(line.split()[1].strip()) break mem = `%.f` % (mem / 1024.0) + ` MB` return {`Memory`:mem} if __name__ == `__main__`: dic = {} data_ip = getIfconfig() parsed_data_ip = parseData(data_ip) ip = parseIfconfig(parsed_data_ip) data_dmi = getDmi() parsed_data_dmi = parseData(data_dmi) dmi = parseDmi(parsed_data_dmi) hostname = getHostname() osver = getOsVersion() cpu = getCpu() mem = getMemory() dic.update(ip) dic.update(dmi) dic.update(hostname) dic.update(osver) dic.update(cpu) dic.update(mem) ``` 將獲取到的所有資料資訊並按簡單格式對齊顯示 ``` for k,v in dic.items(): print `%-10s:%s` % (k, v)
實驗測試結果:
product :VMware Virtual Platform osver :CentOS release 6.4 (Final) sn :VMware-56 4d b4 6c 05 e5 20 dc-c6 49 0c e1 e0 18 1c 75 Memory :1870 MB cpu_num :2 ip :192.168.0.8 vender :VMware, Inc. hostname :vip cpu_model :Intel(R) i7-4710MQ 2.50GHz
相關文章
- 使用 Python 獲取 Linux 系統資訊PythonLinux
- linux下面獲取主機資訊Linux
- 【Python】獲取機器使用資訊Python
- 5 個獲取 Linux 主機資訊的命令Linux
- SAP ABAP使用CDS獲取系統資訊
- python使用wmi模組獲取windows下的系統資訊 監控系統PythonWindows
- 獲取計算機系統唯一資訊計算機
- 主機資訊收集工具DMitryMIT
- Python獲取網路中的存活主機以及哪些主機是LinuxPythonLinux
- Android系統資訊獲取Android
- Python獲取系統資訊模組psutil(轉載)Python
- Bash 實現 Linux 版 sysinfo 獲取系統資訊Linux
- 【Python】獲取主機ip的方式Python
- 【Linux】-Sysreport linux系統資訊收集工具Linux
- SNMP系統資訊獲取工具onesixtyone
- Inxi:獲取Linux系統和硬體資訊的神器Linux
- 使用Python獲取ECS相關資訊Python
- Python 獲取檔案系統使用率Python
- python 獲取linux本機資訊【十全十美】PythonLinux
- OpenDayLight 氫版本 RestAPI 呼叫例項(2)-主機資訊獲取(Python)RESTAPIPython
- Python 系統資源資訊獲取工具,你用過沒?Python
- Linux 獲取系統開機/啟動時間Linux
- 靈活使用getconf命令來獲取系統資訊
- Sigar獲取作業系統資訊作業系統
- vmi:獲取 windows 系統硬體資訊Windows
- android系統中獲取imei號和其他手機資訊Android
- python使用ldap3獲取使用者資訊PythonLDA
- MySQL系統如何收集統計資訊MySql
- 作業系統資訊收集工具作業系統
- Android中獲取系統記憶體資訊以及程式資訊-----ActivityManager的使用(一)Android記憶體
- Linux系統修改主機名Linux
- linux 主機mail 系統配置.LinuxAI
- 獲取系統字型,獲取系統預設字型
- golang gopsutil 程式 系統硬體資訊 獲取Golang
- Windows系統安全獲取重要資訊的方法(一)Windows
- psutil獲取作業系統負載資訊作業系統負載
- Python Web 框架 Django 如何使用jwt獲取使用者資訊PythonWeb框架DjangoJWT
- [Oracle] Oracle收集統計資訊的取樣比例Oracle