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

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

bash 复制代码
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_frsize
    used = (disk.f_blocks - disk.f_bfree) * disk.f_frsize
    usage = int(used / total * 100)
    return usage

# 获取内存使用率
def get_memory_usage():
    with open('/proc/meminfo', 'r') as mem:
        free_memory = 0
        total_memory = 0
        for 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_memory
        usage = 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服务器。

相关推荐
C-DHEnry1 小时前
Linux 不小心挂载错磁盘导致无法启动系统咋办
linux·运维·服务器·雨云
破烂pan1 小时前
github下载repo中的单独文件
github
JosieBook2 小时前
【若依框架】若依前后端分离项目怎么部署到服务器?
运维·服务器
f***68602 小时前
【Sql Server】sql server 2019设置远程访问,外网服务器需要设置好安全组入方向规则
运维·服务器·安全
DeadPool loves Star2 小时前
利用笔记本与SSH转发给服务器上的虚拟机通网
运维·服务器·ssh
kkce3 小时前
快快科技 MTR 路由检测全面支持 IPv6,多节点覆盖赋能全协议网络诊断
服务器·网络·科技
SelectDB4 小时前
Doris MCP Server v0.6.0 正式发布
github
hakukun4 小时前
Ubuntu启动时volume报错无法进入系统问题解决
linux·ubuntu
qq_401700414 小时前
Linux磁盘配置与管理
linux·运维·服务器
恒创科技HK4 小时前
香港大带宽服务器能降低ping值吗 ?
运维·服务器