获取centos的raid阵列监控,与python的计划任务

import subprocess
import time
import schedule
import datetime
import smtplib
from email.mime.text import MIMEText


# 获取阵列情况
def get_array_status():
    # 执行 megacli 命令获取阵列状态
    # centos中获取阵列命令
    cmd = 'megacli -LDInfo -LALL -aALL|grep -A 5 "Primary-5, Secondary-0, RAID Level Qualifier-3"'
    output = subprocess.check_output(cmd, shell=True, encoding='utf-8')
    lines = output.splitlines()
    data_raid = []
    for data in lines:
        print(data)
        if 'Primary-5, Secondary-0, RAID Level Qualifier-3' in data:
            data_raid.append("正在检测此系统radi情况")
        elif 'State' in data:
            if 'Optimal' in data:
                data_raid.append("raid5状态正常")
            else:
                data1 = "故障"
                write(data1)
                elim()
                break
        elif 'Number Of Drives' in data:
            if '11' in data:
                data_raid.append("正常的磁盘数为:" + '11')
                write(data_raid)
            else:
                data1 = "故障"
                write(data1)
                elim()
                break


# 发送异常邮件
def elim():
    # 设置发件人和收件人
    # qq邮箱,发件邮箱
    sender = '**********@qq.com'
    recipient = '***************@*******.com'
    # 飞书邮箱

    # 设置邮件内容
    subject = '阵列告警'
    message = '现在检测到阵列异常,需要检测192.168.6.6的阵列'
    msg = MIMEText(message, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['From'] = sender
    msg['To'] = recipient

    # 设置 QQ 邮箱的 SMTP 服务器地址和端口号
    smtp_server = 'smtp.qq.com'
    smtp_port = 587

    # 设置发件人邮箱的登录凭据
    username = '****************@qq.com'
    # 需要在qq邮箱网页版中获取授权码
    password = '*************'

    try:
        # 创建SMTP客户端对象
        smtp_obj = smtplib.SMTP(smtp_server, smtp_port)

        # 开启安全连接
        smtp_obj.starttls()

        # 登录邮箱
        smtp_obj.login(username, password)

        # 发送邮件
        smtp_obj.sendmail(sender, recipient, msg.as_string())

        print('邮件发送成功!')
    except Exception as e:
        print('邮件发送失败:', str(e))
    finally:
        # 关闭连接
        smtp_obj.quit()


# 脚本输入数据写入到日志文件中
def write(data):
    data = '\n'.join(data)
    current_time = datetime.datetime.now()
    formatted_time = current_time.strftime("%Y-%m-%d %H:%M")
    path = '/root/raid/raid.log'
    minio_data = formatted_time + '\n' + '------------->' + '\n' + data
    with open(path, 'a') as file:
        file.write(minio_data + '\n')
    print("数据写入成功")


schedule.every().hour.do(get_array_status)
while True:
    schedule.run_pending()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_51711897

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值