获取linux系统信息的一个python脚本

简介:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/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  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():
     =  subprocess.Popen( 'fdisk -l' , stdout = subprocess.PIPE, shell = True )
     out  =  p.communicate()[ 0 ]
     info  =  []
     for  in  out.split( '\n\n' ):
         for  in  i.splitlines():
             if  x:
                 info.append(x)
     return  info
#读取dmidecode信息
def  read_dmidecode():
     =  subprocess.Popen( 'dmidecode -t 1' , stdout = subprocess.PIPE, shell = True )
     return  p.communicate()[ 0 ]
#读取ifconfig信息
def  read_ifconfig():
     =  subprocess.Popen( 'ifconfig' , stdout = subprocess.PIPE, shell = True )
     return  p.communicate()[ 0 ]
#返回cpu信息:CPU型号、颗数、核数
def  get_cpuinfo(data):
     cpu_info  =  {}
     for  in  data.splitlines():
         k, v  =  [x.strip()  for  in  i.split( ':' )]
         cpu_info[k]  =  v
       
     cpu_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  in  data:
         if  m_disk.match(i):
             =  i.split( ',' )[ 0 ]
             k, v  =  [x  for  in  i.split( ':' )]
             disk_info[k]  =  v
     return  disk_info
#返回硬件信息:品牌、型号
def  get_dmiinfo(data):
     dmi_info  =  {}
     line_in  =  False
     for  line  in  data.splitlines():
         if  line.startswith( 'System Information' ):
             line_in  =  True
             continue
         if  line.startswith( '\t' and  line_in:
             k, v  =  [i.strip()  for  in  line.split( ':' )]
             dmi_info[k]  =  v
         else :
             line_in  =  False
     return  sub_dict(dmi_info,  'Manufacturer,Product Name,Serial Number' )
#返回网卡及ip信息:网卡、IP址、MAC地址
def  get_ipinfo(data):
     data  =  (i  for  in  data.split( '\n\n' if  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  in  data:
         =  {}
         if  ifname.match(i):
             device  =  ifname.match(i).group()
             x[ 'Adapter' =  device
         if  macaddr.search(i):
             mac  =  macaddr.search(i).group()
             x[ 'MAC' =  mac
         if  ipaddr.search(i):
             ip  =  ipaddr.search(i).group()
             x[ 'IP' =  ip
         else :
             x[ 'IP' =  None
         ip_info.append(x)
     return  ip_info
#返回内存及swap大小
def  get_meminfo():
     mem_info  =  {}
     with  open ( '/proc/meminfo' 'r' ) as f:
         data  =  f.readlines()
         for  in  data:
             k, v  =  [x.strip()  for  in  i.split( ':' )]
             mem_info[k]  =  int (v.split()[ 0 ])
     return  sub_dict(mem_info,  'MemTotal,SwapTotal' )
#返回操作信息
def  get_osinfo():
     os_info  =  {}
     =  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_md5
     elif  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())


本文转自 li_qinshan 51CTO博客,原文链接:http://blog.51cto.com/share/1269078
相关文章
|
2月前
|
JSON 缓存 API
深度分析淘宝API接口,用Python脚本实现
本内容深入解析淘宝开放平台 API 的接口设计与 Python 实现,涵盖接口体系、认证机制、签名规则及限流策略,并提供完整的 Python 调用框架,适用于电商系统对接与自动化运营。
|
2月前
|
JSON 算法 API
深度分析小红书城API接口,用Python脚本实现
小红书作为以UGC内容为核心的生活方式平台,其非官方API主要通过移动端抓包解析获得,涵盖内容推荐、搜索、笔记详情、用户信息和互动操作等功能。本文分析了其接口体系、认证机制及请求规范,并提供基于Python的调用框架,涉及签名生成、登录态管理与数据解析。需注意非官方接口存在稳定性与合规风险,使用时应遵守平台协议及法律法规。
|
2月前
|
JSON API 数据安全/隐私保护
【干货满满】分享微店API接口到手价,用python脚本实现
微店作为知名社交电商平台,其开放平台提供商品查询、订单管理等API接口。本文介绍如何通过微店API获取商品到手价(含优惠、券等),涵盖认证机制、Python实现及关键说明。
|
2月前
|
JSON API 数据安全/隐私保护
【干货满满】分享淘宝API接口到手价,用python脚本实现
淘宝开放平台通过API可获取商品到手价,结合商品详情与联盟接口实现优惠计算。需使用AppKey、AppSecret及会话密钥认证,调用taobao.tbk.item.info.get接口获取最终价格。代码示例展示签名生成与数据解析流程。
|
2月前
|
JSON API 数据安全/隐私保护
深度分析苏宁API接口,用Python脚本实现
苏宁易购开放平台提供覆盖商品、订单、库存、门店等零售全链路的API服务,采用RESTful架构与“AppKey+AppSecret+签名”认证机制,支持线上线下一体化业务处理。本文详解其API特性、认证流程及Python调用实现。
|
2月前
|
自然语言处理 安全 API
深度分析洋码头API接口,用Python脚本实现
洋码头是国内知名跨境电商平台,专注于海外商品直购。本文基于其API的通用设计逻辑,深入解析了认证机制、签名规则及核心接口功能,并提供了Python调用示例,适用于商品与订单管理场景。
|
2月前
|
JSON API 数据格式
深度分析易贝API接口,用Python脚本实现
本文深度解析了eBay开放平台的RESTful API接口体系,涵盖其核心功能、OAuth 2.0认证机制、请求规范及限流策略,并基于Python构建了完整的API调用框架。内容包括商品与订单管理接口的实现逻辑、认证流程、错误处理机制及实战调用示例,适用于跨境电商系统开发与多平台集成。
|
2月前
|
JSON 监控 BI
深度分析亚马逊API接口,用Python脚本实现
本内容深度解析亚马逊SP-API接口体系,涵盖商品、订单、库存等核心功能域,详解LWA认证、AWS签名及Python调用实现,适用于跨境电商系统开发与集成。
|
2月前
|
API Python 数据格式
深度分析京东API接口,用Python脚本实现
深度分析京东API接口,用Python脚本实现
|
2月前
|
JSON API 数据格式
深度分析大麦网API接口,用Python脚本实现
大麦网为国内领先演出票务平台,提供演唱会、话剧、体育赛事等票务服务。本文基于抓包分析其非官方接口,并提供Python调用方案,涵盖演出列表查询、详情获取及城市列表获取。需注意非官方接口存在稳定性风险,使用时应遵守平台规则,控制请求频率,防范封禁与法律风险。适用于个人学习、演出信息监控等场景。