工作中经常要查看磁盘空间的使用,所以写了个脚本实现自动监控,自己就不用总去看啦~~~
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 “-”代表从某个数字到某个数字, “,”分开几个离散的数字