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服务器。

相关推荐
运维有小邓@3 小时前
Active Directory服务账户是什么?
运维·服务器·网络
百万蹄蹄向前冲3 小时前
2026云服务器从零 搭建与运维 指南
服务器·javascript·后端
HIT_Weston3 小时前
84、【Ubuntu】【Hugo】搭建私人博客:文章目录(三)
linux·运维·ubuntu
qq_5470261794 小时前
Linux 常用快捷键及文本编辑器
linux·运维·服务器
埃伊蟹黄面5 小时前
磁盘级文件系统核心原理解析
linux·文件
醇氧5 小时前
【Linux】 安装 Azul Zulu JDK
java·linux·运维
小康小小涵6 小时前
睿抗机器人大赛魔力元宝
python·ubuntu·gitee·github
一直跑7 小时前
查看显卡驱动版本,查看哪个用户使用显卡(GPU)进程
linux·服务器
滴水之功7 小时前
Windows远程桌面(非图形化界面)连接Ubuntu22.04
linux
借你耳朵说爱你8 小时前
在Linux上挂载磁盘
linux