利用python检查磁盘空间使用情况的代码实现

 更新时间:2024年08月01日 09:12:16   作者:pyliumy  
本文将向读者展示如何利用Python编写自动化脚本,以检查磁盘空间使用情况,无论你是经验丰富的系统管理员,还是对Python自动化充满兴趣的开发者,本文都将为你提供实用的脚本示例和详细的解析步骤,帮助你快速掌握磁盘空间监控的自动化方法,需要的朋友可以参考下

一.前言

在信息技术飞速发展的今天,数据量的激增使得磁盘空间管理成为系统运维中的一项基础而关键的任务。磁盘空间的不足不仅会影响系统性能,更可能导致服务中断,给企业带来不可估量的损失。因此,及时准确地监控磁盘空间使用情况,对于保障系统稳定性和数据安全至关重要。

面对日益增长的存储需求,手动检查磁盘空间的方式不仅效率低下,而且容易出错。自动化磁盘空间检查成为了解决这一问题的必然选择。自动化工具可以24小时不间断地监控磁盘状态,一旦发现问题,立即发出警告,大大提高了运维的响应速度和准确性。

Python,作为一种简单易学且功能强大的编程语言,在系统管理领域有着广泛的应用。其丰富的库支持和灵活的脚本编写能力,使其成为实现自动化运维任务的理想选择。

本文将向读者展示如何利用Python编写自动化脚本,以检查磁盘空间使用情况。无论你是经验丰富的系统管理员,还是对Python自动化充满兴趣的开发者,本文都将为你提供实用的脚本示例和详细的解析步骤,帮助你快速掌握磁盘空间监控的自动化方法。

二.使用的库介绍

  • os: 提供了与操作系统交互的功能,如执行命令和操作文件系统。
  • shutil: 提供了高级的文件操作功能,如复制、移动和删除文件。
  • glob: 用于通过通配符查找文件路径名。
  • smtplib, MIMEText, Header: 用于发送电子邮件的相关模块和类。

三.代码实现以及解析

import os
import shutil
import glob
import smtplib
from email.mime.text import MIMEText
from email.header import Header
 
# 邮件发送函数
def send_email(subject, message, to_email):
    from_email = "your_email@example.com"
    email_password = "your_email_password"
 
    msg = MIMEText(message, 'plain', 'utf-8')
    msg['From'] = Header(from_email)
    msg['To'] = Header(to_email)
    msg['Subject'] = Header(subject)
 
    try:
        server = smtplib.SMTP('smtp.example.com', 587)
        server.starttls()
        server.login(from_email, email_password)
        server.sendmail(from_email, [to_email], msg.as_string())
        server.quit()
        print("邮件发送成功")
    except smtplib.SMTPException as e:
        print("错误:无法发送邮件", e)
 
# 检查磁盘空间并清理
def check_and_clean_disk(space_threshold=80, log_dir='/path/to/logs'):
    total, used, free = os.popen('df -h /').readlines()[1].split()
    usage_percent = int(used.strip('%'))  # 获取磁盘使用率
 
    if usage_percent > space_threshold:
        print(f"磁盘使用率 {usage_percent}% 超过阈值 {space_threshold}%,开始清理。")
 
        # 清理操作:删除指定目录下30天前的日志文件
        for log_file in glob.glob(os.path.join(log_dir, '*.log')):
            if os.path.getctime(log_file) < time.time() - 30 * 86400:
                shutil.rmtree(log_file)
                print(f"删除旧日志文件:{log_file}")
 
        # 发送邮件通知
        send_email(
            "磁盘空间清理通知",
            f"磁盘空间使用率超过 {space_threshold}%,已自动清理。当前使用率为:{usage_percent}%",
            "admin_email@example.com"
        )
    else:
        print(f"磁盘使用率正常:{usage_percent}%。")
 
if __name__ == "__main__":
    check_and_clean_disk()

3.1导入模块

import os
import shutil
import glob
import smtplib
from email.mime.text import MIMEText
from email.header import Header
  • os: 提供了与操作系统交互的功能,如执行命令和操作文件系统。
  • shutil: 提供了高级的文件操作功能,如复制、移动和删除文件。
  • glob: 用于通过通配符查找文件路径名。
  • smtplibMIMETextHeader: 用于发送电子邮件的相关模块和类。

3.2邮件发送函数 send_email

def send_email(subject, message, to_email):
    from_email = "your_email@example.com"
    email_password = "your_email_password"
 
    msg = MIMEText(message, 'plain', 'utf-8')
    msg['From'] = Header(from_email)
    msg['To'] = Header(to_email)
    msg['Subject'] = Header(subject)
 
    try:
        server = smtplib.SMTP('smtp.example.com', 587)
        server.starttls()
        server.login(from_email, email_password)
        server.sendmail(from_email, [to_email], msg.as_string())
        server.quit()
        print("邮件发送成功")
    except smtplib.SMTPException as e:
        print("错误:无法发送邮件", e)
  • send_email 函数负责发送邮件通知。它使用了SMTP协议连接到指定的邮件服务器,并使用TLS加密进行安全通信。
  • 在发送邮件之前,需要指定发件人邮箱和其对应的SMTP登录密码。建议将密码存储在安全的环境变量中,而不是直接硬编码在代码中。
  • 函数捕获 smtplib.SMTPException 异常,并在发送失败时打印错误信息。

3.3检查磁盘空间函数 check_and_clean_disk

def check_and_clean_disk(space_threshold=80, log_dir='/path/to/logs'):
    total, used, free = os.popen('df -h /').readlines()[1].split()
    usage_percent = int(used.strip('%'))  # 获取磁盘使用率
 
    if usage_percent > space_threshold:
        print(f"磁盘使用率 {usage_percent}% 超过阈值 {space_threshold}%,开始清理。")
 
        # 清理操作:删除指定目录下30天前的日志文件
        for log_file in glob.glob(os.path.join(log_dir, '*.log')):
            if os.path.getctime(log_file) < time.time() - 30 * 86400:
                shutil.rmtree(log_file)
                print(f"删除旧日志文件:{log_file}")
 
        # 发送邮件通知管理员
        send_email(
            "磁盘空间清理通知",
            f"磁盘空间使用率超过 {space_threshold}%,已自动清理。当前使用率为:{usage_percent}%",
            "admin_email@example.com"
        )
    else:
        print(f"磁盘使用率正常:{usage_percent}%。")
  • check_and_clean_disk 函数用于检查磁盘使用率,并在超过指定阈值时进行清理操作。
  • 使用 os.popen('df -h /').readlines()[1].split() 获取并解析磁盘空间信息,从中提取使用率百分比。
  • 如果磁盘使用率超过 space_threshold,则执行清理操作:删除指定目录下30天前的日志文件。
  • 在清理后,调用 send_email 函数发送邮件通知管理员。

3.4主程序逻辑

if __name__ == "__main__":
    check_and_clean_disk()
  • 在 if __name__ == "__main__": 块中,调用 check_and_clean_disk() 函数,作为程序的入口点,开始执行磁盘空间检查和清理操作。

四.致谢

非常感谢您阅读我的博客!如果您有任何问题、建议或想了解特定主题,请随时告诉我。您的反馈对我非常重要,我将继续努力提供高质量的内容。

到此这篇关于利用python检查磁盘空间使用情况的代码实现的文章就介绍到这了,更多相关python磁盘空间使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中的urllib库高级用法教程

    Python中的urllib库高级用法教程

    这篇文章主要介绍了Python中的urllib库高级用法教程,想要请求需要设置一些请求头,如果要在请求的时候增加一些请求头,那么就必须使用request.Request类来实现了,比如要增加一个 User-Agent ,增加一个 Referer 头信息等,需要的朋友可以参考下
    2023-10-10
  • Python中使用haystack实现django全文检索搜索引擎功能

    Python中使用haystack实现django全文检索搜索引擎功能

    django是python语言的一个web框架,功能强大。配合一些插件可为web网站很方便地添加搜索功能。下面通过本文给大家分享Python中使用haystack实现django全文检索搜索引擎功能,感兴趣的朋友一起看看吧
    2017-08-08
  • PyTorch Distributed Data Parallel使用详解

    PyTorch Distributed Data Parallel使用详解

    这篇文章主要为大家介绍了PyTorch Distributed Data Parallel使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Python字典实现伪切片功能

    Python字典实现伪切片功能

    这篇文章主要介绍了Python字典实现伪切片功能,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Python简直是万能的,这5大主要用途你一定要知道!(推荐)

    Python简直是万能的,这5大主要用途你一定要知道!(推荐)

    这篇文章主要介绍了Python主要用途,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • python time()的实例用法

    python time()的实例用法

    在本篇文章里小编给大家整理了关于如何使用python time()方法,需要的朋友们可以参考下。
    2020-11-11
  • Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式

    Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式

    这篇文章主要介绍了Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • RC4文件加密的python实现方法

    RC4文件加密的python实现方法

    这篇文章主要介绍了RC4文件加密的python实现方法,实例分析了RC4文件加密的原理与Python实现技巧,需要的朋友可以参考下
    2015-06-06
  • Python数据类型和常用操作

    Python数据类型和常用操作

    这篇文章主要介绍了Python数据类型和常用操作,数值数据类型用于存储数值,数据类型不可改变,改变会分配一个新的对象,下文更多相关内容介绍需要的小伙伴可以参考一下
    2022-04-04
  • 使用python实现回文数的四种方法小结

    使用python实现回文数的四种方法小结

    今天小编就为大家分享一篇使用python实现回文数的四种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论