Python监控磁盘空间及发邮件提醒

时间:2021-09-16 08:48:47

工作中经常要查看磁盘空间的使用,所以写了个脚本实现自动监控,自己就不用总去看啦~~~


用Python调用Shell 的方法,参照 

python 调用shell命令的方法

 get_usage().py  

# -*- coding: utf-8 -*-
import os,re
from python_email import send_email


def get_usage():
    du_result=os.popen("df -h YourPath|awk 'NR==2{print $5}'")     #只要第二行的使用率73%
    du_result=du_result.read().strip()
    print du_result
    use_percent=int(re.search('[0-9]+',du_result).group())
    if use_percent>70:
        print 'Opps!'
        top_result=os.popen('du -m --max-depth=1 /scratch/fusion|sort -nr|head -11|tail') 
        top_result= top_result.read().strip()
        send_email(du_result,top_result)
    else:
        print 'Go on!'

if __name__=='__main__':
    get_usage()


用SMTP 发送邮件   python_email.py

# -*- coding: utf-8 -*-


from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
import smtplib

def _format_addr(s):
    name,addr=parseaddr(s)
    return formataddr((\
          Header(name,'utf-8').encode(),\
          addr.encode('utf-8') if isinstance(addr,unicode) else addr))


def send_email(title,content):
    from_addr=‘发送人的邮箱’
    password='密码'
    stmp_server=''
    to_addr=''

    msg = MIMEText('Top 10 of usage(M)\n'+content,'plain','utf-8')   #邮件内容
    msg['From']=_format_addr(from_addr)
    msg['To']=_format_addr(to_addr)
    msg['Subject']=Header('The usage of server: %s' %title,'utf-8').encode()   #邮件标题

    server=smtplib.SMTP_SSL(stmp_server,端口) #默认是25
    server.set_debuglevel(1)
    server.login(from_addr,password)
    server.sendmail(from_addr,[to_addr],msg.as_string())
    server.quit()


实现定时查看发送,用crontab命令

当前非管理员用户执行时,可以用命令crontab -e 来打开一个vi编辑自己的任务。 cron文件语法:      分     小时    日       月       星期     命令      0-59   0-23   1-31   1-12     0-6     command     (取值范围,0表示周日一般一行对应一个任务)     记住几个特殊符号的含义:         “*”代表取值范围内的数字,         “/”代表”每”,如每2分钟:*/2         “-”代表从某个数字到某个数字,         “,”分开几个离散的数字