python3监控CentOS磁盘空间脚本
程序员文章站
2022-05-02 20:19:39
python脚本监控centos磁盘空间,任何一个分区空间使用大于80%即发邮件给到指定邮箱。
monitor.py
#-*- coding: utf-8 -*...
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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。