Python脚本获取Linux系统信息
# -*- 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] = 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 i in data:
if m_disk.match(i):
i = i.split(',')[0]
k, v = [x for x 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 i 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 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'] = 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 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_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())
Python脚本获取Linux系统信息的更多相关文章
- python脚本在linux下的执行
假设现有一篇待执行的python脚本test.py python脚本在linux下面执行有两种方式: 打开Linux终端,输入 python test.py 在test.py脚本第一行添加声明 #!/ ...
- 使用 Python 获取 Linux 系统信息
探索platform模块 platform模块在标准库中,它有很多运行我们获得众多系统信息的函数.让我们运行Python解释器来探索它们中的一些函数,那就从platform.uname()函数开始吧: ...
- 【转】 使用 Python 获取 Linux 系统信息
在本文中,我们将会探索使用Python编程语言工具来检索Linux系统各种信息.走你. 哪个Python版本? 当我提及Python,所指的就是CPython 2(准确的是2.7).我会显式提醒那些相 ...
- 使用 python 获取 Linux 系统信息(通过dmidecode命令)
通过 dmidecode 命令可以获取到 Linux 系统的包括 BIOS. CPU.内存等系统的硬件信息,这里使用 python 代码来通过调用 dmidecode 命令来获取 Linux 必要的系 ...
- 使用 python 收集获取 Linux 系统主机信息
使用 python 代码收集主机的系统信息,主要:主机名称.IP.系统版本.服务器厂商.型号.序列号.CPU信息.内存等系统信息. #!/usr/bin/env python #encoding: u ...
- 使用Python收集获取Linux系统主机信息
爬虫代理IP由芝麻HTTP服务供应商提供 使用 python 代码收集主机的系统信息,主要:主机名称.IP.系统版本.服务器厂商.型号.序列号.CPU信息.内存等系统信息. #!/usr/bin/en ...
- sehlle脚本获取linux服务器基本信息
将以下代码全选复制在linux机器上新建x.sh文件编辑复制进去执行即可. #获取linux服务器基本信息脚本 #!/bin/bash # #Name:system_info #Ver:1.0 #Au ...
- Python输出内容的三种方式:print输出 python脚本执行 linux直接执行
1. 在linux中安装python后,在linux命令行中输入python即可切换到Python命令行下 退出python命令行的命令: 老版本:ctrl+D 新版本:quit();或exit() ...
- 如何解决Python脚本在Linux和Windows上的格式问题
python是一种对缩进有严格要求的语言, Python脚本可以使用非常多的工具进行编写,笔者在Linux系统使用JEdit进行Python脚本编写,由于在Linux编写脚本比较痛苦,比如想一眼看出相 ...
随机推荐
- 初学HBase的几个问题
转自 http://itindex.net/detail/50571-hbase-%E9%97%AE%E9%A2%98 本文主要针对对HBase不了解的人.主要想基于个人的理解回答以下几个问题: 什么 ...
- MRCA|Wright–Fisher population genetic model|SNP rate
(Panda has a high heterozygosity rate) 通过对mtDNA(为了预测SNP的密度)的分析,可知panda的多样性,当前全基因组数据才能完全建立模型. mitocho ...
- Nodejs:Node.js模块机制小结
今天读了<深入浅出Nodejs>的第二章:模块机制.现在做一个简单的小结. 序:模块机制大致从这几个部分来讲:JS模块机制的由来.CommonJS AMD CMD.Node模块机制和包和n ...
- spring中@Autowrite注解和@Resource的区别
spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resour ...
- GreenPlum查看表和数据库大小
表大小 zwcdb=# select pg_size_pretty(pg_relation_size('gp_test')); pg_size_pretty ---------------- 1761 ...
- 第26题:LeetCode572:Subtree of Another Tree另一个树的子树
题目描述 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树.s 的一个子树包括 s 的一个节点和这个节点的所有子孙.s 也可以看做它自身的一棵子树. 示例 1: ...
- 新装Ubuntu后的一些配置
一:Ubuntu 16.04 开启root用户和使用root用户登陆 1. 编辑/etc/lightdm/lightdm.conf autologin-guest=false autologin-us ...
- linux 下nginx除了首页404的问题
今天在部署tp5的时候除了首页能访问.其他都是not found 原因是 Nginx服务器默认不支持pathinfo,index.php后面的参数都没带上 在需要pathinfo支持的程序中 则无 ...
- DevOps - 配置管理 - Chef
#!/bin/sh # WARNING: REQUIRES /bin/sh # # - must run on /bin/sh on solaris 9 # - must run on /bin/sh ...
- yii2 RUL的生成
通常情况下,会使用 yii\helpers\Url 使用Url类来生成想要的URL地址(链接) Url提供的方法大都是静态方法,不需要对类进行实例化 1.1 最常用的 Url::to() 1.2. b ...