首页 > 系统 > CentOS > 正文

Python脚本监控CentOS磁盘空间

2024-06-28 16:00:16
字体:
来源:转载
供稿:网友

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

monitor.py

#-*- coding: utf-8 -*-import socketimport subPRocessimport smtplibfrom email.mime.text import MIMETextsender="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 ipdef 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 resultdef 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()


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表