Python自动化运维实战:从Linux系统中收集数据

本文介绍如何使用Python从Linux系统收集数据,包括获取系统信息、硬件资源,通过邮件发送报告,并利用time和date模块记录时间,以及设置cron定时运行脚本。
摘要由CSDN通过智能技术生成
从Linux系统中收集数据

使用Linux命令可以查看当前系统状态和运行状况的相关数据。然而,单个Linux命令和应用程序只能获取某一方面的系统数据。我们需要利用Python模块将这些详细信息反馈给管理员,同时生成一份有用的系统报告。

我们将报告分为两部分。第一部分是使用platform模块获取的一般系统信息,第二部分是硬件资源,如CPU和内存等。

首先从导入platform模块开始,它是一个内置的Python库。platform模块中有很多方法,它们可用来获取当前运行Python命令的操作系统的详细信息。

import platform
system = platform.system()
print(system)

上述代码的运行结果如下。

Uploading file...

该脚本返回当前系统的类型,同样的脚本在Windows系统上运行会得到不同的结果。当它在Windows系统上运行时,输出结果就变成Windows。

Uploading file...

常用的函数uname()和Linux命令(uname -a)的功能一样:获取机器的主机名、体系结构和内核信息,但是uname()采用了结构化格式,以便通过序号来引用相应的值。

import platform
from pprint import pprint
uname = platform.uname()
pprint(uname)

上述代码的运行结果如下。

Uploading file...

system()方法获得的第一个值是系统类型,第二个是当前机器的主机名。

使用PyCharm中的自动补全功能可以浏览并列出platform模块中的所有可用函数,按Ctrl + Q组合键就可以查看每个函数的文档(见下图)。

Uploading file...

然后,使用Linux文件提供的信息列出Linux机器中的硬件配置。这里需要记住,在/proc/目录下可以访问CPU、内存以及网络等相关信息;我们将读取这些信息并在Python中使用标准的open()函数访问它们。查看/proc/目录可以获取更多信息。

下面给出具体的脚本。

首先,导入platform模块,它仅在当前任务中使用。

#!/usr/bin/python
__author__ = "Bassim Aly"
__EMAIL__ = "basim.alyy@gmail.com"

import platform

然后,定义函数。以下代码包含了本次练习中需要的两个函数——check_feature()get_value_from_string()

def check_feature(feature,string):
    if feature in string.lower():
        return True
    else:
        return False
def get_value_from_string(key,string):
    value = "NONE"
    for line in string.split("\n"):
        if key in line:
            value = line.split(":")[1].strip()
    return value

最后是Python脚本的主要部分,其中包括用来获取所需信息的Python代码。

cpu_features = []
with open('/proc/cpuinfo') as cpus:
    cpu_data = cpus.read()
    num_of_cpus = cpu_data.count("processor")
    cpu_features.append("Number of Processors: {0}".format(num_of_cpus))
    one_processor_data = cpu_data.split("processor")[1]
    print one_processor_data
    if check_feature("vmx",one_processor_data):
        cpu_features.append("CPU Virtualization: enabled")
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值