以下是一个使用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服务器。