当前位置: 首页 > news >正文

利用python检查磁盘空间使用情况

目录

一.前言 

二.使用的库介绍 

三.代码实现以及解析 

3.1导入模块

3.2邮件发送函数 send_email

3.3检查磁盘空间函数 check_and_clean_disk

3.4主程序逻辑

四.致谢


一.前言 

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

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

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

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



二.使用的库介绍 

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






     

三.代码实现以及解析 


 

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检查磁盘空间使用情况

目录 一.前言 二.使用的库介绍 三.代码实现以及解析 3.1导入模块 3.2邮件发送函数 send_email 3.3检查磁盘空间函数 check_and_clean_disk 3.4主程序逻辑 四.致谢 一.前言 在信息技术飞速发展的今天&#xff0c;数据量的激增使得磁盘空间管理成为系统运维中的一项基…...

卷积神经网络(五)---图像增强的方法

前面的部分专注于卷积神经网络的层结构介绍&#xff0c;同时还介绍了到目前为止比较出名的卷积神经网络&#xff0c;接着使用比较复杂的卷积神经网络提高了 MNIST 数据集的准确率。下面将从另外的角度——图像增强的方面入手&#xff0c;提高模型的准确率和泛化能力。 一直以来…...

矩阵常见分解算法及其在SLAM中的应用

文章目录 常见特殊矩阵定义Cholesky分解&#xff08;正定Hermittian矩阵&#xff0c;分解结果唯一&#xff09;Cholesky分解应用 SVD分解&#xff08;将singularvalues排序后分解唯一&#xff09;SVD 分解的应用&#xff08;任意矩阵&#xff09; QR分解&#xff08;任意矩阵&a…...

【排序】快速排序详解

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;排序 个人主页&#xff1a;Celias blog~ 一、快速排序的思想 快速排序的核心思想是&#xff1a; 选定一个…...

贪心算法总结(2)

一、买卖股票的最佳时机 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxProfit(vector<int>& prices) {int miniINT_MAX;int ret0;for(int&price:prices){//遍历的时候&#xff0c;我们随时去更新最小的值&#xff0c;然后让每一位…...

弘景光电:技术实力与创新驱动并进

在光学镜头及摄像模组产品领域&#xff0c;广东弘景光电科技股份有限公司&#xff08;以下简称“弘景光电”&#xff09;无疑是一颗耀眼的明星。自成立以来&#xff0c;弘景光电凭借其强大的研发实力、卓越的产品性能、精密的制造工艺以及严格的质量管理体系&#xff0c;在光学…...

2024年7月23日~2024年7月29日周报

目录 一、前言 二、完成情况 2.1 一种具有边缘增强特点的医学图像分割网络 2.2 融合边缘增强注意力机制和 U-Net 网络的医学图像分割 2.3 遇到的困难 三、下周计划 一、前言 上周参加了一些师兄师姐的论文讨论会议&#xff0c;并完成了初稿。 本周继续修改论文&#xff0…...

M3U8流视频数据爬虫

M3U8流视频数据爬虫 HLS技术介绍 现在大部分视频客户端都采用HTTP Live Streaming&#xff08;HLS&#xff0c;Apple为了提高流播效率开发的技术&#xff09;&#xff0c;而不是直接播放MP4等视频文件。HLS技术的特点是将流媒体切分为若干【TS片段】&#xff08;比如几秒一段…...

保护您的数字财富:模块化沙箱在源代码防泄露中的突破

在数字化浪潮中&#xff0c;企业面临着前所未有的数据安全挑战。源代码、商业机密、客户数据……这些宝贵的数字资产一旦泄露&#xff0c;后果不堪设想。SDC沙盒防泄密系统&#xff0c;以其卓越的技术实力和创新的解决方案&#xff0c;为企业提供了一个坚不可摧的安全屏障。 核…...

FFmpeg源码:avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析

一、引言 AVIOContext是FFmpeg&#xff08;本文演示用的FFmpeg源码版本为5.0.3&#xff09;中的字节流上下文结构体&#xff0c;用来管理输入输出数据。打开一个媒体文件的时候&#xff0c;需要先把数据从硬盘读到缓冲区&#xff0c;然后会用到AVIOContext中的如下成员&#x…...

如何使用 API 查看极狐GitLab 镜像仓库中的镜像?

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab &#xff1a;https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署…...

软件-vscode-plantUML-IDEA

文章目录 vscode基础命令 实操1. vscode实现springboot项目搭建 &#xff08;包括spring data jpa和sqlLite连接&#xff09; PlantUMLIDEA下载及安装Eval Reset插件配置修改IDEA创建项目的默认目录IDEA配置gitIDEA翻译插件translationIDEA断点调试IDEA全局搜索快捷键不能使用代…...

ES6语法详解,面试必会,通俗易懂版

目录 Set的基本使用WeakSet 使用Set 和 WeakSet 区别内存泄漏示例&#xff1a;使用普通 Set 保存 DOM 节点如何避免这个内存泄漏MapWeakMap 的使用 Set的基本使用 在ES6之前&#xff0c;我们存储数据的结构主要有两种&#xff1a;数组、对象。 在ES6中新增了另外两种数据结构&a…...

CTFshow--Web--代码审计

目录 web301 web302 web303 web304 web305 web306 web307 web308 web309 web310 web301 开始一个登录框, 下意识sql尝试一下 发现 1 的时候会到一个 checklogin.php 的路径下, 但啥也没有 好吧, 这是要审计代码的 ,下载好源码, 开始审计 看了一下源码 , 应该就是sql…...

Java语言程序设计——篇十(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 接口介绍 接口概述接口定义接口的实现实战演练 &#x1f445;接口的继承实战演练实战演练 接口的类型常量实战演练 静态方法默认方法解决默认方…...

Qt对比MFC优势

从Qt小白到现在使用了有四年的时间&#xff0c;之前也搞过MFC,WinForm,基本上都是桌面的框架&#xff0c; 从难易程度看MFC>QT>WinForm; 运行的效率上来看MFC>QT>WinForm; 开发效率上WinForm>QT>MFC; 跨平台Qt首选&#xff1b; 界面的美观难易程度Qt>…...

RuntimeError: No CUDA GPUs are available

RuntimeError: No CUDA GPUs are available 目录 RuntimeError: No CUDA GPUs are available 【常见模块错误】 【解决方案】 解决步骤如下&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科…...

URL参数中携带中文?分享 1 段优质 JS 代码片段!

本内容首发于工粽号&#xff1a;程序员大澈&#xff0c;每日分享一段优质代码片段&#xff0c;欢迎关注和投稿&#xff01; 大家好&#xff0c;我是大澈&#xff01; 本文约 800 字&#xff0c;整篇阅读约需 1 分钟。 今天分享一段优质 JS 代码片段&#xff0c;在发送 ajax 请…...

sass的使用

一、变量 //声明一个变量 $highlight-color: #F90; .selected {border: 1px solid $highlight-color; }//编译后 .selected {border: 1px solid #F90; }二、导入 import "xxx.scss"三、混合器简单定义 通过mixin定义&#xff0c;通过include调用 // mixin.scss /…...

【足球走地软件】走地数据分析预测【大模型篇】走地预测软件实战分享

了解什么是走地数据&#xff1f; 走地数据分析&#xff0c;在足球赛事的上下文中&#xff0c;是一种针对正在进行中的比赛进行实时数据分析的方法。这种方法主要用于预测比赛中的某些结果或趋势&#xff0c;如总进球数、比分变化、球队表现等。 在足球走地数据分析中&#xf…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...

云原生安全实战:API网关Envoy的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口&#xff0c;负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...