#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import os
ip=os.popen("/sbin/ifconfig  | grep 'inet addr:'| grep -v '10.' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'").read().strip('\n') #截取ip为字符串,去掉回车
hostname=os.popen("hostname").read().strip('\n')#截取主机名为字符串,去掉回车
sub=ip+'--'+hostname
df=os.popen("df -Th").read() #磁盘空间使用情况
lweek = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
fname = '/oracle/diag/rdbms/pmsdg/pmsdg/trace/alert_pmsdg.log'#alert文件
f = open(fname, "rb")
foname = 'foo1.txt'#累计报错文件
fo = open(foname, "rb")
f_in_foo = fo.readlines() #将文件内容转化成一个列表
row_count= len(f_in_foo)#累计报错文件是否为空
if row_count==0:
    row_count_last = 0 
else:
    a=f_in_foo[row_count-1]
    import string
    import re
    m = re.search(r'[^:]+$', str(a)) #正则截取最后一个冒号后面的值m.group(0)
    row_count_last=string.atoi(m.group(0))
    row_count=row_count_last+1
fo.close()
f_in_split = f.read().splitlines() #将文件内容转化成一个列表
fo2name = 'foo2.txt'
fo2 = open(fo2name, "wb") #本次新加报错记录文件
fo = open(foname, "ab")
z=0#邮件发送标记
for i in f_in_split[row_count:]:  
        if i.startswith('alter') or i.startswith('Errors') or i.startswith('Shutting down') or i.startswith('ORA-'):
            z=1
            while True:
                a=f_in_split[row_count_last]
                if a[0:3] in lweek :
                    fo.write(a+"    line_num:"+str(row_count_last+1)+"\n") #记录所在行数。(list计数从0开始,文本行数从1开始,所以加一)
                    fo.write(i+"    line_num:"+str(row_count+1)+"\n")
                    fo2.write(df+"\n")
                    fo2.write(a+"    line_num:"+str(row_count_last+1)+"\n") 
                    fo2.write(i+"    line_num:"+str(row_count+1)+"\n")
                    break
                row_count_last-=1    
        row_count = row_count + 1   
        row_count_last = row_count-1 
fo.close()
fo2.close()
if z:
###发送邮件
#导入smtplib和MIMEText 
    import smtplib
    from email.mime.text import MIMEText 
    fo = open(fo2name, "rb") 
    def send_mail(sub,content): 
    ############# 
    #要发给谁
        mailto_list=["lijianwei@mail.haoyisheng.com","liuyonglian@mail.haoyisheng.com"]
    ##################### 
    #设置服务器,用户名、口令以及邮箱的后缀 
        mail_host="smtp.mail.haoyisheng.com" 
        mail_user="lijianwei@mail.haoyisheng.com" 
        mail_pass="ljw1987" 
        mail_postfix="mail.haoyisheng.com" 
       # mail_host="smtp.163.com" 
       # mail_user="18210588493@163.com" 
       # mail_pass="ljw1987" 
       # mail_postfix="163.com" 
    ###################### 
        '''
        to_list:发给谁 
        sub:主题 
        content:内容 
        send_mail("lijianwei@mail.haoyisheng.com","sub","content") 
        ''' 
        me=mail_user+"<"+mail_user+"@"+mail_postfix+">" 
        msg = MIMEText(content,_subtype='plain',_charset='gbk') 
        msg['Subject'] = sub 
        msg['From'] = me 
        msg['To'] = ";".join(mailto_list) 
        try: 
            s = smtplib.SMTP() 
            s.connect(mail_host) 
            s.login(mail_user,mail_pass) 
            s.sendmail(me, mailto_list, msg.as_string()) 
            s.close() 
            return True 
        except Exception, e: 
            print str(e) 
            return False 
    if __name__ == '__main__': 
        if send_mail(sub,fo.read()): #fo.read()将文件用字符串读取,f.readlines()=f.read().splitlines()列表形式读取
            print u'发送成功' 
        else: 
            print u'发送失败'
    fo.close()