linux监控服务器磁盘、内存空间使用率到达90%发送邮件脚本

以下是一个使用Python编写的Linux监控服务器磁盘、内存空间使用率并在达到90%时发送邮件的脚本:

import os
import smtplib
from email.mime.text import MIMEText
from email.header import Header# 设置阈值
DISK_THRESHOLD = 90
MEMORY_THRESHOLD = 90# 获取磁盘使用率
def get_disk_usage():disk = os.statvfs("/")total = disk.f_blocks * disk.f_frsizeused = (disk.f_blocks - disk.f_bfree) * disk.f_frsizeusage = int(used / total * 100)return usage# 获取内存使用率
def get_memory_usage():with open('/proc/meminfo', 'r') as mem:free_memory = 0total_memory = 0for i in mem:sline = i.split()if str(sline[0]) == 'MemTotal:':total_memory = int(sline[1])elif str(sline[0]) in ('MemFree:', 'Buffers:', 'Cached:'):free_memory += int(sline[1])used_memory = total_memory - free_memoryusage = int(used_memory / total_memory * 100)return usage# 发送邮件
def send_email(subject, content):sender = 'your_email@example.com'receivers = ['receiver_email@example.com']message = MIMEText(content, 'plain', 'utf-8')message['From'] = Header("Server Monitor", 'utf-8')message['To'] = Header("Admin", 'utf-8')message['Subject'] = Header(subject, 'utf-8')try:smtpObj = smtplib.SMTP('localhost')smtpObj.sendmail(sender, receivers, message.as_string())print("邮件发送成功")except smtplib.SMTPException:print("Error: 无法发送邮件")# 主函数
def main():disk_usage = get_disk_usage()memory_usage = get_memory_usage()if disk_usage >= DISK_THRESHOLD or memory_usage >= MEMORY_THRESHOLD:subject = "服务器资源告警"content = f"磁盘使用率:{disk_usage}%,内存使用率:{memory_usage}%"send_email(subject, content)if __name__ == '__main__':main()

请将your_email@example.com替换为您的发件人邮箱地址,将receiver_email@example.com替换为收件人邮箱地址。此外,您需要配置本地SMTP服务器以使邮件发送功能正常工作。如果您使用的是Gmail,可以参考这个教程来配置SMTP服务器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7月11日云技术研讨会 | 车载信息安全全流程实施方案

伴随着汽车的智能网联化发展,网络攻击也逐渐渗透漫延至汽车领域,汽车行业面临着重大的信息安全挑战。此外,UNECE WP.29 R155和ISO/SAE 21434等标准也对汽车的信息安全提出了规范化要求,旨在分阶段将产品全生命周期中由信息安全威胁…

中介子方程四十二

XXFXXuXXWXXuXXdXXrXXαXXuXpXXKXηXiXXnXXyXηXuXXrXXaXnXXαXLXyXXWXuXeXuXWXXyXLXαXXnXaXXrXXuXηXyXXnXXiXηXKXXpXuXXαXXrXXdXXuXWXπXXWXeXyXeXbXπXpXXNXXqXeXXrXXαXXuXpXXKXηXiXXnXXyXηXuXXrXXaXnXXαXLXyXXWXuXeXuXWXXyXLXαXXnXaXXrXXuXηXyXXnXXiXηXKXXpXuXXα…

JavaScript中的this指向

1. 全局环境下的this 在全局环境中(在浏览器中是window对象,在Node.js中是global对象),this指向全局对象。 console.log(this window); // 在浏览器中为true console.log(this.document ! undefined); // true,因为…

opencv编译报错OpenCV does not recognize MSVC_VERSION “1940“

具体如下: CMake Warning at cmake/OpenCVDetectCXXCompiler.cmake:182 (message):OpenCV does not recognize MSVC_VERSION "1940". Cannot set OpenCV_RUNTIME Call Stack (most recent call first):CMakeLists.txt:174 (include) 打开源码\opencv\sources\cmak…

如何加密U盘?U盘加密软件推荐

U盘是我们最常用的移动存储设备,可以帮助我们随身携带大量数据。为了避免U盘数据泄露,我们需要加密保护U盘。那么,U盘该如何加密呢?下面小编就为大家推荐两款专业的U盘加密软件。 U盘超级加密3000 U盘超级加密3000是一款优秀的U盘…

大模型概述-定义/分类/训练/应用

大模型概述 随着时代的发展, 大模型各个领域的应用正在不断扩大. 本文尽力梳理各种材料, 将从概念定义, 类型分类, 训练以及应用等方面对大模型进行一个简要的概述. 如果你想了解大模型但是却缺乏基础的知识或者觉得无从下手, 那么阅读该文章可能对你有所帮助. 如果想了解更多…

react antd表格翻页时记录勾选状态

在Ant Design的React表格(Table)组件中,如果需要在翻页时记住勾选状态,可以通过以下步骤实现: 使用rowSelection属性来控制勾选状态,并添加preserveSelectedRowKeys: true以保留 key。 设置rowKey属性。 …

Django任意URL跳转漏洞(CVE-2018-14574)

目录 Django介绍 URL跳转漏洞介绍 Django任意URL跳转漏洞介绍 环境搭建 防御方法 前段时间在面试时,问到了URL跳转漏洞,我没有回答好,下午把URL跳转漏洞学习了,发现也不难,看来还需要学习的东西很多呀&#xff0c…

cadence symbol修改之一

cdaence virtuoso 复制cell,或者拷贝symbol之后,再次调用的时候,symbol还是跟随原来的cell名字 解决办法 打开对应的symbol 修改partName为 cellName

把前端打包放到Eladmin框架中运行

再resuorces目录创建static文件夹,然后把前端文件放进来 然后修改 ConfigurerAdapter文件,如下图所示 这样就可以通过ip端口/index.html 这样访问啦!

基于Lua源码开发动态库供lua脚本使用

通过require的方式可以加载动态库,然后脚本就可以使用库中提供的函数,一般过程如下: 比如有一个动态库名为:MyFirstLua.dll 则使用时:MyFirstLua require("MyFirstLua") 导出的函数接口名称一定是 int l…

垂直领域大模型的机遇与挑战:从构建到应用

在人工智能技术的浪潮中,大模型以其强大的数据处理和学习能力,成为推动科技进步的重要力量。然而,这种跨领域应用的过程并非一帆风顺,既面临挑战也蕴含机遇。本文从复旦大学的研究工作出发,详细分析大模型的机遇与挑战。 背景 GPT4技术报告指出,GPT4仍处于通用人工智…

Mybatis连接数据库

文章目录 大纲定义类、创建表添加相关依赖五件套5.1 mybatis-config.xml5.2 MybatisUtils.java5.3 \**Mapper.xml5.4 \**Mapper.java5.5 \**Dao.java 测试类 大纲 在Java中定义类、在数据库汇总创建表添加依赖编写5件套测试 定义类、创建表 import java.time.LocalDate; imp…

土壤分析仪:分析土壤中的各种养分

土壤作为地球生命的摇篮,承载着农作物的生长与繁衍。土壤中的养分是农作物生长的关键。 一、土壤分析仪的工作原理 土壤分析仪是一种采用先进传感技术的仪器设备,能够精确测量土壤中的PH值、电导率、有机质含量、养分含量以及微生物数量等参数。它利用多…

# Kafka_深入探秘者(9):kafka 集群管理

Kafka_深入探秘者(9):kafka 集群管理 一、kafka 集群概述 1、kafka 集群概述: 集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可…

ffmpeg下载/配置环境/测试

一、下载 1、访问FFmpeg官方网站下载页面:FFmpeg Download Page; 2、选择适合Windows的版本(将鼠标移动到windows端)。通常,你会找到“Windows builds from gyan.dev”或者“BtbN GitHub Releases”等选项&#xff0…

研0学习Python基础4

1.数组是一种存储大量同性质数据的连续内存空间,只要使用相同的变量名称,便可以连续访问 每一组数据。由于数组元素的便利性,使得大多数程序中都可以看到数组的身影。数组是一 个带有多个数据且模式相同的元素集合。比如,数值所…

WHAT - React Immer

官方文档:https://immerjs.github.io/immer/example-setstate useState ImmeruseImmeruseReducer ImmeruseImmerReducerRedux Immer React 和 Immer 是两个不同的工具,它们在处理状态管理和状态更新时可以很好地结合使用。 React React 是一个用于…

底层软件 | 设备树、设备注册、驱动注册与驱动匹配

前面我们学习了设备如何和驱动匹配,也学习了设备树。 一直觉得,需要有一篇文章系统、项目般的结合讲解一下,加深一下影响,正当我准备动笔之时,发现了一篇很不错的文章! 就分享给大家一起来看看设备树、设…

实验2 字符及字符串输入输出与分支程序设计实验

字符及字符串输入输出 从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。 分支程序设计 从键盘输入一字符,判断该字符是小写字母、大写字母、数字或者其他字符。若输入为小写字母,显示“You Input a Lo…