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编写脚本比较痛苦,比如想一眼看出相 ...
随机推荐
- Jmeter模拟http请求
一.获取用户信息(GET请求):http://hostname/getuser?userid=1 1.打开jmeter,创建一个线程组,再添加一个http请求Sampler 2.设置域名.路径.请求方 ...
- Vue之Vue-touch的使用
最近项目中,有的页面发现设置返回键看起来怪怪的,感觉与整体不协调,于是就考虑使用手势滑动事件来实现返回功能~ 开叉查阅资料~找到了vue-touch,使用起来可谓是简单粗暴啊,适合我这样的快速开发人员 ...
- Webpack--模块打包器
首先介绍一个安装webpack的百度经验:https://jingyan.baidu.com/article/a3a3f811230ee58da3eb8a6e.html 推荐一个详细介绍webpack ...
- bat 服务启动脚本
当电脑上有多个数据库(特别是Oracle,占用内存大,所以我都是设置为手动启动的,或者想在电脑上运行一下其他UI类软件或玩些游戏的时候也需要暂时关掉,奈何我这渣机(V_V))需要启动或停止的时候,就用 ...
- java中如何设置HTTP协议的头信息(header)
首先,我们先看一下http的头信息到底是什么:HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了请求/响应模型,浏览器或其他 ...
- linux几种文件传输方式
本文记录linux系统中文件传输的多种方式,留作备忘.linux中文件传输的方式有ftp,scp,rsync,rz,sz等,但各个工具的功能又有所区别: FTP : FTP是文件服务器,可实现文件的上 ...
- windows 解决缺失.dll的问题
1.缺失MSVCR120.dell和MSVCP120.dll,如图: 这种问题是因为没有Microsoft Visual C++ 2013运行库的问题,自行百度在Microsoft官网下载即可,注意需 ...
- webpack+thymeleaf实现数据直出
webpack动态插入thymeleaf模板,MVC将要使用数据传递到模板中渲染,得到的html就已经带有要初始显示的数据了github:https://github.com/947133297/we ...
- tcl之基本语法—3
- stark组件(2):提取公共视图函数、URL分发和设置别名
效果图: Handler类里处理的增删改查.路由分发.给URL设置别名等包括以后还要添加的很多功能,每一个数据库的类都需要,所以我们要把Handler提取成一个基类.提取成基类后,每一个数据表都可以继 ...