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编写脚本比较痛苦,比如想一眼看出相 ...
随机推荐
- 【转】IOS开发网络篇之──ASIHTTPRequest详解
ASIHTTPRequest 详解, http 请求终结者 版权归旺财勇士所有〜转载需声名〜 原贴地地址:http://wiki.magiche.net/pages/viewpage.action?p ...
- SyntaxError: Non-ASCII character ‘\xe5′ in file和在代码中插入中文,python中文注释
SyntaxError: Non-ASCII character '\xe7' in file 出现这种错误的原因是程序中的编码出问题了,只要在程序的最前面加上 #coding: utf-8 重新保存 ...
- mantis基本配置及邮件服务器配置
邮件服务器配置 在c:\php-5.0.3\php.ini文件中查找smtp,将localhost改为你的发件服务器,如SMTP = smtp.163.com 在php.ini文件中查找sendm ...
- MySql学习笔记01
MySql01 课程介绍 数据库简介 之前通过流操作文件的方式存储数据弊端: 1. 效率低 2. 不管是存还是取都比较麻烦 3. 一般只能存储小量数据 4. 只能存储文本数据 什么是DB DataBa ...
- java--creater in windows
电脑右键--高级--属性--更改环境变量 1.JAVA_HOME C:\Program Files\Java\jdk1.7.0_04 2. Path %JAV ...
- 三、Linux 系统目录结构
Linux 系统目录结构 登录系统后,在当前命令窗口下输入命令: ls / 你会看到如下图所示: 树状目录结构: 以下是对这些目录的解释: /bin:bin是Binary的缩写, 这个目录存放着最 ...
- day03_基本数据类型基本运算
1.什么是数据类型 变量值才是我们存储的数据,所以数据类指的就是变量值的不同种类 2.为何数据要分类型? 变量值是用来保存现实世界中的状态的,那么针对不同的状态就应该用不同类型的数据去表示 3.如何用 ...
- PHP实现消息推送
我们做web的时候偶尔会遇到消息推送,如图示例(红框位置) 当我们遇到这种功能要如何开发呢?下边将我了解的两种方法整理一下: 一.ajax轮询,定时去请求服务器数据 通过观察thinkphp官网貌似也 ...
- php同一个用户同时只能登陆一个, 后登陆者踢掉前登陆者(排他登陆)
通常用户登陆,如果没有特别的限定, 同一个用户可以同时登陆, 今天搞了一个东西限定一个用户不能同时登陆到一个系统上, 后登陆者会把前面登陆的踢出来.(有点像QQ,同个帐号不能在多个地方同时在线, 后面 ...
- 数据追踪系统Zipkin 及其 Zipkin的php客户端驱动hoopak
Zipkin是Twitter的一个开源项目,是一个致力于收集Twitter所有服务的监控数据的分布式跟踪系统,它提供了收集数据,和查询数据两大接口服务.Zipkin 是一款开源的分布式实时数据追踪系统 ...