##ceph_report_email.py
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
import smtplib
import os
from email.mime.text import MIMEText
mailto_list=['xxxx@xxx.com'] #收件人(列表)
mail_host="smtp.163.com" #使用的邮箱的smtp服务器地址,这里是163的smtp地址
mail_user="xxx" #用户名
mail_pass="xxxxxxxxxx" #授权码密码
mail_postfix="163.com" #邮箱的后缀,网易就是163.com
def send_mail(to_list,sub,content):
me="Ceph集群报告"+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content,_subtype='plain')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(to_list) #将收件人列表以‘;’分隔
try:
server = smtplib.SMTP()
server.connect(mail_host) #连接服务器
server.login(mail_user,mail_pass) #登录操作
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False
for i in range(1):
Ceph_osd_stat = os.popen('ceph osd stat')
data = Ceph_osd_stat.read()
Ceph_df = os.popen('ceph df')
ceph_df = Ceph_df.read()
Ceph_health = os.popen('ceph -s')
ceph_health = Ceph_health.read()
#发送1封,上面的列表是几个人,这个就填几
if send_mail(mailto_list,"Ceph集群报告","一、OSD 健康检查 \n\n %s \n\n\n 二、集群容量使用量 \n\n %s \n\n\n三、集群健康检查 \n\n %s " %(data,ceph_df,ceph_health)): #邮件主题和邮件内容
#这是最好写点中文,如果随便写,可能会被网易当做垃圾邮件退信
print "done!"
else:
print "failed!"
##创建定时任务crontab -e
0 10,22 * * * /usr/bin/python /home/xxx/ceph_report_email.py > /dev/null 2>&1 ##每天10、22 点发送报告