[Python] Python3脚本监控CentOS磁盘空间

Python脚本监控CentOS磁盘空间,任何一个分区空间使用大于80%即发邮件给到指定邮箱。


monitor.py

#-*- coding: utf-8 -*-
import socket
import subprocess
import smtplib
from email.mime.text import MIMEText

sender="xxx.xx@xxx.com"
receiver= ["xxx.xx@xxx.com"]
smtpHost="10.134.xxx.xxx"
smtpPort="587"

def get_ip():
    hostname =  socket.getfqdn(socket.gethostname())
    ip = socket.gethostbyname(hostname)
    return ip

def send_mail(receiver,subject,content):
    ip = get_ip()
    msg = MIMEText(content,_subtype='plain',_charset='utf-8')
    msg['Subject'] = subject
    msg['From'] = 'CLOUD SERVER ' + ip
    msg['To'] = ",".join(receiver)

    try:
        smtp = smtplib.SMTP(smtpHost,smtpPort)
        #smtp.set_debuglevel(1)
        smtp.docmd("HELO Server")
        smtp.ehlo("ismetoad")
        smtp.starttls()
        smtp.helo("ismetoad")
        smtp.sendmail(sender,receiver,msg.as_string())
        smtp.close()

    except Exception as error:
        print(error)

def run_cmd(cmd):
    process = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE)    
    result_f,error_f = process.stdout,process.stderr
    errors = error_f.read()
    if errors:
        pass
    result = result_f.read().decode()
    if result_f:
        result_f.close()
    if error_f:
        error_f.close()
    return result

def disk_check():
    subject = ''
    result = run_cmd(cmd)
    content = '[root@vm-vc02-SR910 ~]# ' + cmd + '\n' + result
    result = result.split('\n')
    for line in result:
        if 'G ' in line or 'M ' in line:
            line = line.split()
            for i in line:
                if '%' in i and int(i.strip('%')) > 80:
                    subject = '[WARNING] SERVER FILESYSTEM USE% OVER ' + i + ', PLEASE CHECK!'
    if subject:
        send_mail(receiver,subject,content)
        print('email sended')
    else:
        print('Everything is ok, keep on monitor.')
                           
if __name__ == '__main__':
    cmd = 'df -h'
    disk_check()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值