# -*- 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系统信息
时间: 2024-11-08 23:56:10
Python脚本获取Linux系统信息的相关文章
Inxi:一个功能强大的获取Linux系统信息的命令行工具
Inxi 最初是为控制台和 IRC(网络中继聊天)开发的一个强大且优秀的命令行系统信息脚本.可以使用它获取用户的硬件和系统信息,它也用于调试或者社区技术支持工具. 使用 Inxi 可以很容易的获取所有的硬件信息:硬盘.声卡.显卡.网卡.CPU 和 RAM 等.同时也能够获取大量的操作系统信息,比如硬件驱动.Xorg .桌面环境.内核.GCC 版本,进程,开机时间和内存等信息. 运行在命令行和 IRC 上的 Inxi 输出略有不同,IRC 上会有一些可供用户使用的默认过滤器和颜色选项.支持的
Python脚本获取参数的方式
在运维过程中,常常需要自己写脚本,而python往往是最佳的选择.那么怎么获取python脚本的命令行参数呢,例如: python demo.py a b c 怎么获取命令行参数,a,b,c 呢?可以通过sys库里面的argv来实现, 例如: $ cat demo.py #-*- coding: UTF-8 -*- import os import sys def demo(): print sys.argv print len(sys.argv) for i in range(len(sys.
python脚本在linux下的执行
假设现有一篇待执行的python脚本test.py python脚本在linux下面执行有两种方式: 打开Linux终端,输入 python test.py 在test.py脚本第一行添加声明 #!/usr/bin/python 这是指定python脚本的解释器,然后给test.py添加可执行权限并执行 chmod +x test.py ./test.py 第一行时给test.py添加可执行权限,第二行执行该脚本.(./)的含义是本目录下 原文地址:https://www.cnblogs.com
使用 Python 获取 Linux 系统信息
探索platform模块 platform模块在标准库中,它有很多运行我们获得众多系统信息的函数.让我们运行Python解释器来探索它们中的一些函数,那就从platform.uname()函数开始吧: >>> import platform>>> platform.uname()('Linux', 'fedora.echorand', '3.7.4-204.fc18.x86_64', '#1 SMP Wed Jan 23 16:44:29 UTC 2013', 'x86
使用 python 获取 Linux 系统信息(通过dmidecode命令)
通过 dmidecode 命令可以获取到 Linux 系统的包括 BIOS. CPU.内存等系统的硬件信息,这里使用 python 代码来通过调用 dmidecode 命令来获取 Linux 必要的系统信息,更多的信息都可以通过这种方式去获取. 方式1: 1 #!/usr/bin/python 2 #encoding: utf-8 3 4 from subprocess import Popen, PIPE 5 6 p = Popen(['dmidecode'], stdout = PIPE)
使用 python 收集获取 Linux 系统主机信息
使用 python 代码收集主机的系统信息,主要:主机名称.IP.系统版本.服务器厂商.型号.序列号.CPU信息.内存等系统信息. #!/usr/bin/env python #encoding: utf-8 ''' 收集主机的信息: 主机名称.IP.系统版本.服务器厂商.型号.序列号.CPU信息.内存信息 ''' from subprocess import Popen, PIPE import os,sys ''' 获取 ifconfig 命令的输出 ''' def getIfconfig(
使用Python收集获取Linux系统主机信息
爬虫代理IP由芝麻HTTP服务供应商提供 使用 python 代码收集主机的系统信息,主要:主机名称.IP.系统版本.服务器厂商.型号.序列号.CPU信息.内存等系统信息. #!/usr/bin/env python #encoding: utf-8 ''' 收集主机的信息: 主机名称.IP.系统版本.服务器厂商.型号.序列号.CPU信息.内存信息 ''' from subprocess import Popen, PIPE import os,sys ''' 获取 ifconfig 命令的输出
window下编写python脚本在linux下运行出错 usr/bin/python^M: bad interpreter: No such file or directory
今天在windows下使用notepad++写了个python脚本,传到linux服务器执行后提示:-bash: ./logger.py: usr/bin/python^M: bad interpreter: No such file or directory 1.原因分析 这是不同系统编码格式引起的:在windows系统中编辑的logger.py文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息.一般是因为windows行结尾和linux行结尾标识不同造成的,在window中行结
python脚本——获取系统当前时间与前一天的时间
python脚本中很多时候需要自动获取系统的当前时间和前一日的时间,如果为了获得前一日的时间,只是单纯的取出当前的系统时间(字符串类型),转为整型之后减1,再转换为字符串类型,是不可行的,当月初的时间将会出现0天,比如12月1日会变成12月0日,合理的做法应当让其自动向前推一天. 如下: 1.python里获取当前时间有一个time属性import timeTIME_NOW = time.strftime('%Y%m%d') 或TIME_NOW = time.strftime("%Y%m%d&q