其实获取系统信息,如果使用python的psutil的模块,更加的简洁好用。自己写的这个脚本算是一个python练习。

#!/usr/bin/env python2.7
# -*- coding:utf-8 -*-
import os
import subprocess
import re
import hashlib
#对字典取子集
def sub_dict(form_dict, sub_keys, default=None):return dict([(k, form_dict.get(k.strip(), default)) for k in sub_keys.split(',')])
#读取cpuinfo信息
# dmidecode -t 4
def read_cpuinfo():cpu_stat = []with open('/proc/cpuinfo', 'r') as f:data = f.read()for line in data.split('\n\n'):cpu_stat.append(line)return cpu_stat[-2]
#读取fdisk信息
def read_fdisk():p = subprocess.Popen('fdisk -l', stdout=subprocess.PIPE, shell=True)out = p.communicate()[0]info = []for i in out.split('\n\n'):for x in i.splitlines():if x:info.append(x)return info
#读取dmidecode信息
def read_dmidecode():p = subprocess.Popen('dmidecode -t 1', stdout=subprocess.PIPE, shell=True)return p.communicate()[0]
#读取ifconfig信息
def read_ifconfig():p = subprocess.Popen('ifconfig', stdout=subprocess.PIPE, shell=True)return p.communicate()[0]
#返回cpu信息:CPU型号、颗数、核数
def get_cpuinfo(data):cpu_info = {}for i in data.splitlines():k, v = [x.strip() for x in i.split(':')]cpu_info[k] = vcpu_info['physical id'] = str(int(cpu_info.get('physical id')) + 1)return sub_dict(cpu_info, 'model name,physical id,cpu cores')
#返回每块硬盘大小
def get_diskinfo(data):disk_info = {}m_disk = re.compile(r'^Disk\s/dev')for i in data:if m_disk.match(i):i = i.split(',')[0]k, v = [x for x in i.split(':')]disk_info[k] = vreturn disk_info
#返回硬件信息:品牌、型号
def get_dmiinfo(data):dmi_info = {}line_in = Falsefor line in data.splitlines():if line.startswith('System Information'):line_in = Truecontinueif line.startswith('\t') and line_in:k, v = [i.strip() for i in line.split(':')]dmi_info[k] = velse:line_in = Falsereturn sub_dict(dmi_info, 'Manufacturer,Product Name,Serial Number')
#返回网卡及ip信息:网卡、IP址、MAC地址
def get_ipinfo(data):data = (i for i in data.split('\n\n') if i and not i.startswith('lo'))ip_info = []ifname = re.compile(r'(eth[\d:]*|wlan[\d:]*)')ipaddr = re.compile(r'(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})){3}')macaddr = re.compile(r'[A-F0-9a-f:]{17}')for i in data:x = {}if ifname.match(i):device = ifname.match(i).group()x['Adapter'] = deviceif macaddr.search(i):mac = macaddr.search(i).group()x['MAC'] = macif ipaddr.search(i):ip = ipaddr.search(i).group()x['IP'] = ipelse:x['IP'] = Noneip_info.append(x)return ip_info
#返回内存及swap大小
def get_meminfo():mem_info = {}with open('/proc/meminfo', 'r') as f:data = f.readlines()for i in data:k, v = [x.strip() for x in i.split(':')]mem_info[k] = int(v.split()[0])return sub_dict(mem_info, 'MemTotal,SwapTotal')
#返回操作信息
def get_osinfo():os_info = {}i = os.uname()os_info['os_type'] = i[0]os_info['node_name'] = i[1]os_info['kernel'] = i[2]return os_info
#唯一标识符
def get_indentity(data):match_serial = re.compile(r"Serial Number: .*", re.DOTALL)match_uuid = re.compile(r"UUID: .*", re.DOTALL)if match_serial.search(data):serial = match_serial.search(data).group()if match_uuid.search(data):uuid = match_uuid.search(data).group()if serial:serial_md5 = hashlib.md5(serial).hexdigest()return serial_md5elif uuid:uuid_md5 = hashlib.md5(uuid).hexdigest()return uuid_md5
if __name__ == "__main__":ipinfo = get_ipinfo(read_ifconfig())dmiinfo = get_dmiinfo(read_dmidecode())cpuinfo = get_cpuinfo(read_cpuinfo())diskinfo = get_diskinfo(read_fdisk())meminfo = get_meminfo()osinfo = get_osinfo()identity = get_indentity(read_dmidecode())

转载于:https://blog.51cto.com/share/1269078

获取linux系统信息的一个python脚本相关推荐

  1. python 百分比输出_获取Linux系统负荷百分比的python脚本

    有台主机的CPU负荷监控脚本,原先是这么写的 import psutil sample_seconds = 1 print psutil.cpu_percent(sampel_seconds) 就是跑 ...

  2. python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值

    在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...

  3. python你的人生_人生苦短:运行你的第一个 Python 脚本

    Shell 是一个Read-Eval-Print-Loop(REPL),它只接受命令,评估它们并打印输出. 我会假设你已经安装了一个有效的Python解释器,已经准备运行你的第一个Python脚本. ...

  4. linux脚本输出缓存上限,关于 Linux 下后台执行 Python 脚本的缓冲问题

    [问题简述] 在 Linux 下后台执行 Python 脚本,重定向到日志文件,日志文件迟迟没有内容. [方案一](测试有效)nohup python3 -u t.py &> log.l ...

  5. 【python脚本】linux中编写运行python脚本

    linux中编写运行python脚本 以/home/me/share目录下的hello脚本为例 解释器 #! /usr/bin/pythonprint('hello') print('hi') pri ...

  6. python远程控制电脑_只需一个python脚本就可远程控制电脑,打开微信即可远程遥控操作...

    原标题:只需一个python脚本就可远程控制电脑,打开微信即可远程遥控操作 今天带给大家一个非常有意思的 python 程序,基于 itchat 实现微信控制电脑.你可以通过在微信发送命令,来拍摄当前 ...

  7. python从外部传入参数_从另一个Python脚本运行一个Python脚本,并传入参数 - python...

    我想从另一个Python脚本运行一个Python脚本.我想像使用命令行一样传递变量. 例如,我将运行我的第一个脚本,该脚本将遍历值列表(0.1.2.3),并将其传递给第二个脚本,依次为script2. ...

  8. python脚本中执行另一个脚本_如何用python调用另一个python脚本?

    如果想要将已经设置好的内容,在转移到另一个位置要怎么做呢?小编能写到的方法有,照抄,复制,以及转移使用.在我们日常办公上是非常好理解的,就是ctr v,但是如果想在编程上,将某一位置拿去到别的项目上使 ...

  9. 创建一个Python脚本,实现以下功能。(1)定义一个函数,用于计算圆柱体的表面积、体积,函数名为comput,.输入参数为底半径(r)、高(h),返回值为表面积(S)、体积(V),返回多值的函

    创建一个Python脚本,实现以下功能. (1)定义一个函数,用于计算圆柱体的表面积.体积,函数名为comput,.输入参数为底 半径(r).高(h),返回值为表面积(S).体积(V),返回多值的函数 ...

  10. linux使得python后台运行,linux 下后台运行python脚本

    &符号 这两天要在服务器端一直运行一个Python脚本,当然就想到了在命令后面加&符号 $ python /data/python/server.py >python.log & ...

最新文章

  1. eclipse 快捷键文件地址
  2. php sf框架,GitHub - YanCastle/sf: php swoole framework
  3. grpc中监听端口添加及绑定
  4. appium---【Mac】Appium-Doctor提示WARN:“ ios_webkit_debug_proxy cannot be found”解决方案...
  5. 启明云端分享|乐鑫推出在线选型工具 ESP Product Selector
  6. Opencv打印显示Mat方法
  7. 关于并发数与在线数的概念
  8. php 立即执行函数,关于javascrip的立即执行函数的解析
  9. 使用Typescript开发(二)
  10. 超边际分析不能用计算机,一种基于超边际分析的分布式计算资源分配方法-Journalof.PDF...
  11. C# “配置系统未能初始化”
  12. 华为力推自研AI芯片,还记得大明湖畔的寒武纪吗?
  13. watch蜂窝开通服务器中断,原因找到了!Apple Watch Series 3为何无法连接蜂窝网络...
  14. MATLAB绘图基础01—复杂网络工具箱命令
  15. visio studio code安装之后的两个错误的解决办法
  16. 安装指定版本Kubernetes
  17. mysql怎么批量导入excel数据_phpmyadmin怎么批量导入excel数据到mysql
  18. 百度云有关Token
  19. 【教程】超详细通过Shizuku转生微信集成WeXposed实现防撤回与红包
  20. 2022-2028年中国祭祀用品行业市场竞争状况及发展趋向分析报告

热门文章

  1. PAIP.并发编程 多核编程 线程池 ExecutorService的判断线程结束
  2. paip.提升中文分词准确度---新词识别
  3. 农业银行王敬东——金融科技时代商业银行战略模式选择初探
  4. Rust: Integers: Recreation One
  5. (转)ICO是区块链与生俱来的特性,是金融深化的终局
  6. 洛可可集团董事长贾伟:未来组织的进化
  7. 这款机器人也想体验双十一!
  8. 云南公安云计算平台项目获中国优秀云计算开源案例特等奖
  9. 【通信】基于matlab GUI循环编码译码【含Matlab源码 1348期】
  10. 【优化算法】多目标人工蜂群算法(MOABC)【含Matlab源码 1236期】